perm filename PROTOC.XGP[DLN,MRC]1 blob sn#369501 filedate 1978-07-28 generic text, type T, neo UTF8
/LMAR=0/XLINE=3/FONT#0=BAXL30/FONT#1=BAXI30/FONT#2=BUCK75/FONT#3=CRTURZ/FONT#4=BAXL40/FONT#5=BAXI35/FONT#6=FIX25



␈↓ α∧␈↓␈↓∧First Edition




␈↓ α∧␈↓∧␈↓β␈↓ ¬HC 


␈↓ α∧␈↓β␈↓α␈↓ β+DIALNET PROTOCOLS 


␈↓ α∧␈↓α␈↓↓␈↓ ∧RMark Crispin ␈↓and ␈↓↓Ignacio Zabala␈↓ 











␈↓ α∧␈↓␈↓ αTThese␈α⊃protocols␈α⊂are␈α⊃being␈α⊂developed␈α⊃as␈α⊂part␈α⊃of␈α⊂the␈α⊃␈↓↓Dialnet␈↓␈α⊂project␈α⊃at␈α⊂the
␈↓ α∧␈↓Stanford␈αUniversity␈α
Artificial␈αIntelligence␈α
Laboratory␈αsupported␈α
by␈αNSF␈αgrant␈α
MCS
␈↓ α∧␈↓77-02080␈α
with␈α∞John␈α
McCarthy␈α∞as␈α
Principal␈α
Investigator.␈α∞ The␈α
project␈α∞is␈α
described
␈↓ α∧␈↓in a paper available online at ARPAnet host SU-AI as DIALNE[DIA,JMC].

␈↓ α∧␈↓␈↓ αTThis␈α∃is␈α∃PROTOC.PUB[DLN,MRC]␈α∃at␈α∀ARPAnet␈α∃host␈α∃SU-AI␈α∃(octal␈α∀13,
␈↓ α∧␈↓decimal 11.).
␈↓ α∧␈↓␈↓ ¬?␈↓↓Dialnet Protocols␈↓␈↓ 	*July 28, 1978


␈↓ α∧␈↓␈↓ ¬S␈↓¬Conventions


␈↓ α∧␈↓␈↓ αTAll␈αnumbers␈αwithout␈αan␈αexplicit␈αbase␈α(ie,␈αoctal␈αor␈αdecimal)␈αspecified␈αshould␈αbe
␈↓ α∧␈↓interpreted␈α∞as␈α∞octal␈α∞unless␈α∞the␈α∞number␈α∞is␈α∞immediately␈α∞followed␈α∞by␈α∞a␈α∞dot,␈α∞in␈α
which
␈↓ α∧␈↓case it is decimal.

␈↓ α∧␈↓␈↓ αTAll␈α
three-digit␈α
octal␈α∞numbers␈α
should␈α
be␈α∞interpreted␈α
as␈α
representing␈α∞an␈α
8.-bit
␈↓ α∧␈↓byte,␈α∞with␈α∂bits␈α∞right-justified␈α∂within␈α∞the␈α∂number␈α∞(ie,␈α∂from␈α∞000␈α∂to␈α∞377).␈α∂ Bytes␈α∞are
␈↓ α∧␈↓expressed in the form as returned by the modem (ie, lsb first in the data stream).

␈↓ α∧␈↓␈↓ αTAll␈α⊂six-digit␈α⊂octal␈α⊃numbers␈α⊂should␈α⊂be␈α⊃interpreted␈α⊂as␈α⊂representing␈α⊃a␈α⊂16.-bit
␈↓ α∧␈↓double-byte,␈αwith␈α
bits␈αright-justified␈α
within␈αthe␈α
number␈α(ie,␈α
from␈α000000␈αto␈α
177777).
␈↓ α∧␈↓Double-bytes␈α
are␈αexpressed␈α
in␈α
the␈αform␈α
returned␈αby␈α
the␈α
modem␈α(ie,␈α
low␈α
order␈αbyte
␈↓ α∧␈↓and lsb first); ie, 010041 is transmitted as 041 020.

































␈↓ α∧␈↓␈↓ ε$1␈↓ 
T
␈↓ α∧␈↓␈↓ ¬?␈↓↓Dialnet Protocols␈↓␈↓ 	*July 28, 1978


␈↓ α∧␈↓␈↓ ¬s␈↓¬Preface


␈↓ α∧␈↓␈↓ αT␈↓↓␈↓ β
"Aren't you glad you use Dialnet?  Don't you wish everybody did?"␈↓ 

␈↓ α∧␈↓␈↓ αT␈↓↓Dialnet␈↓␈α∂provides␈α⊂a␈α∂capability␈α∂for␈α⊂geographically␈α∂separated␈α⊂computers,␈α∂called
␈↓ α∧␈↓␈↓↓hosts␈↓,␈α
to␈αcommunicate␈α
with␈α
each␈αother.␈α
 The␈α
host␈αcomputers␈α
typically␈α
differ␈αfrom␈α
one
␈↓ α∧␈↓another␈α∞in␈α∂type,␈α∞speed,␈α∂word␈α∞length,␈α∂operating␈α∞system,␈α∂etc.␈α∞ Each␈α∂computer␈α∞utilizes
␈↓ α∧␈↓␈↓↓Dialnet␈↓ via ordinary phone lines and special modems.

␈↓ α∧␈↓␈↓ αTAs␈αin␈αmany␈α
other␈αdata␈αcommunication␈αschemes,␈α
a␈αlayered␈αapproach␈α
has␈αbeen
␈↓ α∧␈↓selected␈αin␈αthe␈αdesign␈αof␈αthe␈αDialnet␈αprotocols.␈α Each␈αlayer␈αsees␈αthe␈αimmediate␈αlower
␈↓ α∧␈↓layer␈αas␈αa␈α"black␈αbox"␈αand␈α
need␈αnot␈αbe␈αconcerned␈αabout␈αits␈αinternal␈α
structure.␈α The
␈↓ α∧␈↓lowest␈αlayer␈α
is␈αthe␈αline␈α
protocol␈αof␈αthe␈α
modems,␈αwhich␈αtransfers␈α
data␈αbytes␈α
over␈αthe
␈↓ α∧␈↓phone␈α
lines␈αand␈α
does␈αnecessary␈α
byte␈α
framing,␈αbut␈α
otherwise␈αhas␈α
no␈α
error␈αcorrection
␈↓ α∧␈↓facilities.␈α⊂ At␈α⊂this␈α⊂writing,␈α⊂the␈α⊂modem␈α⊂type␈α⊂used␈α⊂are␈α⊂VADIC␈α⊂VA3405␈α⊂1200/1200
␈↓ α∧␈↓baud full duplex asyncronous modems.

␈↓ α∧␈↓␈↓ αTNext␈α⊃is␈α⊃the␈α⊃␈↓↓host-host␈↓␈α⊃layer,␈α⊃which␈α⊃breaks␈α⊃the␈α⊃data␈α⊃stream␈α⊃into␈α⊃chunks,␈α⊂or
␈↓ α∧␈↓␈↓↓packets␈↓.␈α Each␈αpacket␈αis␈αchecksummed␈αand␈αsequenced,␈αso␈αthat␈αretransmission␈αcan␈αbe
␈↓ α∧␈↓done␈α∞on␈α
a␈α∞packet␈α
whose␈α∞previous␈α∞transmission␈α
was␈α∞corrupted␈α
in␈α∞some␈α∞way.␈α
 Many
␈↓ α∧␈↓systems␈α∞may␈α∞want␈α∞to␈α∞implement␈α∞this␈α
layer␈α∞in␈α∞their␈α∞operating␈α∞system,␈α∞so␈α∞all␈α
␈↓↓Dialnet␈↓
␈↓ α∧␈↓user programs will behave at this level in the same manner.

␈↓ α∧␈↓␈↓ αTFinally␈α∃comes␈α∃the␈α∃user-level␈α∃protocols.␈α∃ This␈α∃includes␈α∃file␈α⊗transfer,␈α∃mail,
␈↓ α∧␈↓linking,␈α∃telnetting,␈α∃etc.␈α⊗ These␈α∃are␈α∃user-level␈α⊗programs,␈α∃and␈α∃␈↓↓Dialnet␈↓␈α⊗has␈α∃been
␈↓ α∧␈↓designed␈α
with␈α
enough␈α
flexibility␈α
to␈α
allow␈αfor␈α
users␈α
to␈α
create␈α
private␈α
protocols␈αof␈α
their
␈↓ α∧␈↓own.

␈↓ α∧␈↓␈↓ αTQuestions concerning ␈↓↓Dialnet␈↓ protocols should be addressed to:

␈↓ α∧␈↓␈↓ αT␈↓↓␈↓ ¬RMark Crispin
␈↓ α∧␈↓↓␈↓ αT␈↓ ∧\Artificial Intelligence Laboratory
␈↓ α∧␈↓↓␈↓ αT␈↓ ∧xStanford, California  94305

␈↓ α∧␈↓↓␈↓ αT␈↓ ¬≤Phone: (415) 491-4712
␈↓ α∧␈↓↓␈↓ αT␈↓ ¬ARPAnet: MRC@SU-AI␈↓

␈↓ α∧␈↓␈↓ αTCopies␈α∪of␈α∩all␈α∪correspondence␈α∪should␈α∩be␈α∪sent␈α∪to␈α∩John␈α∪McCarthy␈α∪and␈α∩Les
␈↓ α∧␈↓Earnest␈α
at␈α∞the␈α
above␈α∞US␈α
mail␈α∞address␈α
or␈α∞via␈α
ARPAnet␈α∞mail␈α
to␈α∞JMC@SU-AI␈α
and
␈↓ α∧␈↓LES@SU-AI.

␈↓ α∧␈↓␈↓ αTIt␈α↔is␈α⊗the␈α↔author's␈α⊗intent␈α↔that␈α⊗these␈α↔protocols␈α⊗are␈α↔both␈α⊗simple␈α↔in␈α⊗their
␈↓ α∧␈↓implementation␈α→and␈α→powerful␈α→in␈α→their␈α→operation.␈α→ Certainly␈α→a␈α→major␈α_design
␈↓ α∧␈↓consideration␈α
was␈αto␈α
design␈α
protocols␈αthat␈α
ordinary␈α
mortals␈αcould␈α
implement␈αon␈α
their
␈↓ α∧␈↓systems.


␈↓ α∧␈↓␈↓ ε$2␈↓ 
T
␈↓ α∧␈↓␈↓ ¬?␈↓↓Dialnet Protocols␈↓␈↓ 	*July 28, 1978


␈↓ α∧␈↓␈↓ ¬≠␈↓¬Host-Host Protocol


␈↓ α∧␈↓␈↓ αTAll␈α
data␈α
is␈α
sent␈α
in␈α
the␈αform␈α
of␈α
packets,␈α
which␈α
contain␈α
a␈α
␈↓↓packet␈αheader␈↓,␈α
optional
␈↓ α∧␈↓␈↓↓data␈↓,␈αand␈αa␈α␈↓↓packet␈αtrailer␈↓.␈α The␈α
packet␈αheader␈αserves␈αto␈αidentify␈αthe␈αtype␈α
of␈αpacket,
␈↓ α∧␈↓the␈αsize␈α
of␈αthe␈α
data␈αarea␈αand␈α
provides␈αinformation␈α
necessary␈αfor␈α
data␈αflow␈αand␈α
error
␈↓ α∧␈↓correction.␈α⊃ The␈α⊃packet␈α⊃trailer␈α⊃provides␈α⊃a␈α⊃checksum␈α⊃for␈α⊃the␈α⊃packet.␈α⊃ Packets␈α⊃are
␈↓ α∧␈↓framed at each end with a ␈↓↓start of packet␈↓ and an ␈↓↓end of packet␈↓ marker.

␈↓ α∧␈↓␈↓ αTThe␈αbytes␈α
which␈αindicate␈α
start␈αof␈α
packet␈αare␈α
called␈αSOP,␈α
and␈αconsist␈αof␈α
ASCII
␈↓ α∧␈↓DLE␈α(220)␈αfollowed␈αby␈αSTX␈α(202);␈αsimilarly,␈αthe␈αbytes␈αwhich␈αindicate␈αend␈αof␈αpacket
␈↓ α∧␈↓are␈αcalled␈αEOP,␈αand␈αare␈αASCII␈αDLE␈αfollowed␈αby␈αETX␈α(203).␈α Note␈αthat␈αthe␈α200␈α
bit
␈↓ α∧␈↓is␈α␈↓↓on␈↓␈α
in␈αDLE,␈αSTX,␈α
and␈αETX.␈α If␈α
a␈α220␈αbyte␈α
is␈αto␈αbe␈α
sent,␈αit␈αis␈α
quoted␈αby␈αbeing␈α
sent
␈↓ α∧␈↓twice.␈α∩ DLE␈α∩followed␈α∩by␈α⊃anything␈α∩other␈α∩than␈α∩STX,␈α⊃ETX,␈α∩or␈α∩DLE␈α∩is␈α⊃currently
␈↓ α∧␈↓undefined;␈αany␈αsuch␈αcombination␈αwhen␈αreceived␈αshould␈αbe␈αdiscarded.␈α 020,␈α002,␈αand
␈↓ α∧␈↓003 are ␈↓↓not␈↓ considered to be DLE, STX, and ETX.

␈↓ α∧␈↓␈↓ αTAll␈αpackets␈αhave␈αa␈αpacket␈αnumber,␈αwhich␈α
for␈αmost␈αpackets␈αstarts␈αat␈α001␈αand␈α
is
␈↓ α∧␈↓incremented␈αwith␈α
each␈αpacket␈α
sent.␈α The␈αpacket␈α
number␈αwraps␈α
around␈αto␈α
001␈αfrom
␈↓ α∧␈↓377.␈α↔ Up␈α↔to␈α↔two␈α↔(the␈α↔default␈α↔window␈α↔size)␈α↔packets␈α↔may␈α↔be␈α↔sent␈α_before␈α↔an
␈↓ α∧␈↓acknowledgement␈αis␈αreceived␈αfor␈α(at␈αleast)␈αthe␈αfirst␈αpacket.␈α The␈αwindow␈αbegins␈αwith
␈↓ α∧␈↓the␈αfirst␈αunacknowledged␈αpacket;␈αtherefore␈αthe␈αwindow␈αsize␈αis␈αan␈αallocation␈αwhich␈αis
␈↓ α∧␈↓used up as packets are sent and is given back as packets are acknowledged.

␈↓ α∧␈↓␈↓ αTSome␈α∩packets␈α⊃(ie,␈α∩NOP,␈α⊃NAK,␈α∩and␈α∩ERR)␈α⊃have␈α∩a␈α⊃packet␈α∩number␈α∩of␈α⊃000.
␈↓ α∧␈↓These␈α∪packets␈α∪do␈α∪not␈α∪count␈α∪against␈α∪the␈α∪window,␈α∪and␈α∪are␈α∪not␈α∪remembered␈α∩for
␈↓ α∧␈↓retransmission␈α
after␈α
they␈α
are␈α
sent.␈α
 Therefore␈α
they␈α
are␈α
lost␈α
if␈α
an␈α
error␈α
occurs␈αwhile
␈↓ α∧␈↓they␈α∀are␈α∀being␈α∀transmitted.␈α∀ This␈α∀is␈α∀because␈α∀what␈α∀information␈α∀they␈α∃convey␈α∀is
␈↓ α∧␈↓generally␈αtiming-critical;␈αif␈αthe␈αpacket␈αwas␈αlost␈αnothing␈αwould␈αbe␈αgained␈αby␈αsending
␈↓ α∧␈↓it again.

␈↓ α∧␈↓␈↓ αTIf␈αthe␈αsender␈αintends␈αto␈αtemporarily␈α"go␈αidle",␈αit␈αshould␈αsend␈αa␈αNOP,␈αrepeated
␈↓ α∧␈↓every␈α
five␈α∞seconds␈α
or␈α
so.␈α∞ This␈α
assures␈α
the␈α∞receiver␈α
that␈α
the␈α∞sender␈α
is␈α
still␈α∞up,␈α
and
␈↓ α∧␈↓serves␈αto␈αinform␈αthe␈αreceiver␈αif␈αany␈αof␈αits␈αpending␈αpackets␈αwere␈αmissed.␈α However,␈α
if
␈↓ α∧␈↓the␈α⊂sender␈α⊂has␈α⊂packets␈α⊂waiting␈α⊂to␈α⊂be␈α⊂acknowledged,␈α⊂it␈α⊂should␈α⊂retransmit␈α⊂the␈α⊂last
␈↓ α∧␈↓packet␈α
on␈α∞the␈α
acknowledgement␈α
pending␈α∞list.␈α
 This␈α
is␈α∞to␈α
avoid␈α
a␈α∞possible␈α
deadlock
␈↓ α∧␈↓which occurs when the last packet before the sending goes idle is lost.

␈↓ α∧␈↓␈↓ αTA␈α_properly␈α_received␈α→packet␈α_with␈α_a␈α→non-zero␈α_packet␈α_number␈α→must␈α_be
␈↓ α∧␈↓acknowledged␈α⊃for␈α⊃the␈α⊃sender␈α⊃to␈α⊃know␈α⊃that␈α⊃the␈α⊃receiver␈α⊃successfully␈α∩received␈α⊃the
␈↓ α∧␈↓packet␈α_and␈α_to␈α_release␈α_that␈α→packet␈α_from␈α_the␈α_window.␈α_ Each␈α_packet␈α→has␈α_an
␈↓ α∧␈↓acknowledgement␈αbyte␈α
which␈αis␈αused␈α
for␈αthis␈αpurpose.␈α
 This␈αbyte␈αin␈α
a␈αpacket␈αsent␈α
by
␈↓ α∧␈↓the␈α⊗receiver␈α⊗contains␈α⊗the␈α⊗number␈α⊗of␈α⊗the␈α⊗highest␈α⊗successfully␈α⊗received␈α⊗packet.
␈↓ α∧␈↓Acknowledging␈α⊃a␈α⊂packet␈α⊃implies␈α⊃acknowledging␈α⊂all␈α⊃unacknowledged␈α⊃packets␈α⊂with
␈↓ α∧␈↓lower␈α⊂packet␈α∂numbers,␈α⊂therefore␈α∂a␈α⊂successfully␈α∂received␈α⊂packet␈α∂can␈α⊂merely␈α⊂set␈α∂the
␈↓ α∧␈↓acknowledgement␈α⊃byte␈α⊃for␈α⊃the␈α⊃next␈α⊃packet␈α⊃to␈α⊃be␈α⊃sent␈α⊃without␈α⊃actually␈α⊃forcing␈α⊃a
␈↓ α∧␈↓packet to be sent.

␈↓ α∧␈↓␈↓ ε$3␈↓ 
T
␈↓ α∧␈↓Host-Host Protocol␈↓ ¬?␈↓↓Dialnet Protocols␈↓␈↓ 	*July 28, 1978


␈↓ α∧␈↓␈↓ αTPackets␈α⊃must␈α∩be␈α⊃received␈α⊃in␈α∩sequence,␈α⊃with␈α⊃the␈α∩exception␈α⊃of␈α∩packets␈α⊃with
␈↓ α∧␈↓packet␈α⊂number␈α⊃000␈α⊂(see␈α⊂above).␈α⊃ If␈α⊂the␈α⊃receiver␈α⊂receives␈α⊂a␈α⊃packet␈α⊂it␈α⊃has␈α⊂already
␈↓ α∧␈↓acknowledged␈α
it␈α
should␈α
discard␈α
it.␈α
 Packets␈α
which␈α
have␈α
a␈α
sequence␈α∞number␈α
higher
␈↓ α∧␈↓than␈αthe␈αexpected␈αpacket␈αand␈α
packets␈αwith␈αincorrect␈αchecksum␈αshould␈α
be␈αdiscarded,
␈↓ α∧␈↓and␈α⊂a␈α⊂NAK␈α⊂sent␈α⊂for␈α⊂the␈α⊂expected␈α⊂packet.␈α⊂ In␈α⊂the␈α⊂event␈α⊂of␈α⊂a␈α⊂framing␈α⊂error,␈α∂the
␈↓ α∧␈↓receiver␈α
should␈α
discard␈α
all␈α
input␈α
until␈α
an␈α
SOP␈α
is␈α
encountered␈α
in␈α
the␈α
input␈α
stream.
␈↓ α∧␈↓If␈αa␈αpacket␈αis␈αdiscarded␈αfor␈αbeing␈αout␈αof␈αsequence,␈αits␈αacknowledgement␈αbyte␈αshould
␈↓ α∧␈↓still be used, otherwise an acknowledgement may be unnecessarily missed.

␈↓ α∧␈↓␈↓ αTIn␈α⊂␈↓↓Dialnet␈↓,␈α⊂the␈α⊂window␈α⊂is␈α⊂␈↓↓optional␈↓;␈α⊂in␈α⊂particular,␈α⊂an␈α⊂implementation␈α⊂which
␈↓ α∧␈↓uses␈αthe␈αwindow␈αshould␈αnot␈αget␈αupset␈αbecause␈αthe␈αforeign␈αhost␈αdisobeys␈αit␈α(it␈αcan␈αof
␈↓ α∧␈↓course␈αneglect␈αto␈αacknowledge␈αpackets␈αwhich␈αcause␈αdata␈αoverruns␈αand␈αforce␈αthem␈αto
␈↓ α∧␈↓be␈αre-sent).␈α However,␈αany␈αimplementation␈αwhich␈αis␈αtrying␈αto␈αbe␈αreasonably␈αefficient
␈↓ α∧␈↓should␈αdo␈αsomething␈αabout␈αhandling␈αwindows␈αand␈αtelling␈αthe␈αforeign␈αhost␈αwhat␈αsort
␈↓ α∧␈↓of window size it can live with.

␈↓ α∧␈↓␈↓ αTThere␈α∩is␈α∩no␈α∩official␈α∩timeout␈α∩for␈α∩deciding␈α∩whether␈α∩a␈α∩host␈α∩is␈α∩still␈α∩alive␈α∩or
␈↓ α∧␈↓whether␈α∞the␈α∂phone␈α∞connection␈α∂is␈α∞poor␈α∂enough␈α∞to␈α∂be␈α∞unusable.␈α∂ Each␈α∞implementor
␈↓ α∧␈↓must decide these for him/herself.

␈↓ α∧␈↓␈↓ αTThe␈α⊃packet␈α∩checksum␈α⊃algorithm␈α∩used␈α⊃is␈α∩the␈α⊃result␈α∩of␈α⊃a␈α∩conversation␈α⊃with
␈↓ α∧␈↓Knuth.␈α
 The␈α
checksum␈α∞is␈α
16.␈α
bits␈α∞long␈α
and␈α
all␈α
of␈α∞the␈α
packet␈α
header␈α∞variables␈α
and
␈↓ α∧␈↓the␈α⊃entire␈α⊂data␈α⊃area.␈α⊃ It␈α⊂does␈α⊃NOT␈α⊂include␈α⊃the␈α⊃packet␈α⊂trailer␈α⊃or␈α⊃the␈α⊂SOP/EOP
␈↓ α∧␈↓packet framing codes.  Note that framing checks happen ␈↓↓before␈↓ the checksum check.

␈↓ α∧␈↓␈↓ αTThe algorithm is: (all numbers should be read as octal)

␈↓ α∧␈↓␈↓ αTchecksum := 1;
␈↓ α∧␈↓␈↓ αTwhile newchar do
␈↓ α∧␈↓␈↓ αT checksum := (checksum * 013215 + newchar) & 177777;

␈↓ α∧␈↓␈↓ αTIn PDP-10 assembly code, this would be:

␈↓ α∧␈↓ε␈↓ αT; CHKBYT adds a byte to the checksum in SUM.
␈↓ α∧␈↓ε␈↓ αT; At the beginning of each packet SUM is
␈↓ α∧␈↓ε␈↓ αT; initialized to 1.
␈↓ α∧␈↓ε␈↓ αT; Call: MOVE CHR,<byte from data stream>
␈↓ α∧␈↓ε␈↓ αT;       PUSHJ P,CHKBYT
␈↓ α∧␈↓ε␈↓ αT;       <return>

␈↓ α∧␈↓ε␈↓ αTCHKBYT: IMULI SUM,013215
␈↓ α∧␈↓ε␈↓ αT        ADDI SUM,(CHR)
␈↓ α∧␈↓ε␈↓ αT        ANDI SUM,177777
␈↓ α∧␈↓ε␈↓ αT        POPJ P,

␈↓ α∧␈↓␈↓ αTThere␈α
is␈α∞always␈α
at␈α∞least␈α
one␈α∞word␈α
in␈α∞the␈α
data␈α∞part␈α
of␈α∞the␈α
packet.␈α∞ The␈α
data
␈↓ α∧␈↓part␈αsize␈αrefers␈αto␈αthe␈αnumber␈αof␈α␈↓↓additional␈↓␈αwords␈αin␈αthe␈αdata␈αpart.␈α Hence␈αthe␈αdata
␈↓ α∧␈↓part␈αcan␈αbe␈α␈↓↓from␈α1␈αto␈α256␈↓␈αdata␈αbytes␈αlong.␈α This␈αmeans␈αthat␈αthe␈α"data␈αsize"␈αfield␈αin
␈↓ α∧␈↓the packet header is actually ␈↓↓one less␈↓ than the actual data size.

␈↓ α∧␈↓␈↓ ε$4␈↓ 
T
␈↓ α∧␈↓Host-Host Protocol␈↓ ¬?␈↓↓Dialnet Protocols␈↓␈↓ 	*July 28, 1978


␈↓ α∧␈↓␈↓ αTThe␈αmotivation␈αfor␈αthis␈αis␈αthat␈αa␈αpower␈αof␈αtwo␈αis␈αa␈αconvenient␈αunit␈αof␈αstorage
␈↓ α∧␈↓for␈α
many␈αsystems.␈α
 In␈α
addition,␈αmany␈α
implementations␈α
will␈αfind␈α
it␈α
convenient␈αto␈α
pack
␈↓ α∧␈↓four␈α
data␈αbytes␈α
in␈αa␈α
single␈αstorage␈α
word.␈α With␈α
framing␈αand␈α
DLE␈αdoubling␈α
stripped,
␈↓ α∧␈↓this␈α∞means␈α∂that␈α∞the␈α∞packet␈α∂header␈α∞will␈α∞be␈α∂exactly␈α∞one␈α∞storage␈α∂word,␈α∞and␈α∂the␈α∞data
␈↓ α∧␈↓part␈α∪will␈α∩begin␈α∪on␈α∩a␈α∪storage␈α∪word␈α∩boundary.␈α∪ In␈α∩addition,␈α∪the␈α∩data␈α∪part␈α∪of␈α∩a
␈↓ α∧␈↓maximum-size␈αpacket␈αwill␈αalso␈αend␈αon␈αa␈αstorage␈αword.␈α This␈αis␈αsignificant␈αfor␈αmany
␈↓ α∧␈↓systems␈αin␈αterms␈αof␈αbuffering;␈αwhether␈αa␈αbyte-by-byte␈αcopy␈αmust␈αbe␈αdone␈αor␈αa␈αfaster
␈↓ α∧␈↓word␈αtransfer.␈α The␈αPDP-10␈αimplementation␈αat␈αStanford␈αexploits␈αthis;␈αan␈αIBM-style
␈↓ α∧␈↓machine can derive similar benefit.

␈↓ α∧␈↓␈↓ αTIn␈αthe␈αCLS,␈αNAK,␈αEOF,␈αand␈αINT␈αop-codes␈αthe␈αdata␈αbyte␈αis␈αmeaningless␈αand
␈↓ α∧␈↓should␈α
be␈α
ignored,␈α
however,␈αit␈α
still␈α
must␈α
be␈αpresent.␈α
 Additionally,␈α
this␈α
byte␈αshould
␈↓ α∧␈↓always␈αbe␈α
zero,␈αto␈α
allow␈αthese␈α
op␈αcodes␈αto␈α
have␈αa␈α
meaningful␈αdata␈α
part␈αin␈α
a␈αfuture
␈↓ α∧␈↓revision of the protocol.

␈↓ α∧␈↓␈↓ αTThere␈α∞are␈α∞no␈α∞restrictions␈α∞on␈α∞the␈α∞size␈α∞or␈α∞content␈α∞of␈α∞the␈α∞data␈α∞part␈α∞of␈α∂a␈α∞NOP
␈↓ α∧␈↓packet,␈α∞except␈α∞the␈α∞packet␈α∞structure␈α∞restriction␈α∞that␈α∞1≤size≤256.␈α∞ Since,␈α∞however,␈α
the
␈↓ α∧␈↓data␈α
is␈αignored␈α
by␈αthe␈α
receiver,␈αa␈α
NOP␈α
packet␈αwould␈α
generally␈αhave␈α
a␈αone-byte␈α
data
␈↓ α∧␈↓part,␈αalthough␈αsome␈αsystems␈αmight␈αwant␈αto␈αpad␈αto␈α4␈αdata␈αbytes␈α(note␈αthat␈αthis␈α
means
␈↓ α∧␈↓the size field in the packet header is 3!) to keep things on word boundaries.





























␈↓ α∧␈↓␈↓ ε$5␈↓ 
T
␈↓ α∧␈↓Host-Host Protocol␈↓ ¬?␈↓↓Dialnet Protocols␈↓␈↓ 	*July 28, 1978


␈↓ α∧␈↓␈↓ αT␈↓¬␈↓ ¬6Packet Format ␈↓ε 
␈↓ α∧␈↓ε␈↓ αT␈↓ βl________________________________________
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|                                      |
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|  2 bytes     SOP framing mark        |
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|                                      |
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|======================================|
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|     Channel #    |     Op Code       |
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|     (4 bits)     |     (4 bits)      |
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|__________________|___________________|
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|                                      |
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|  1 byte      Packet number           |
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|______________________________________|
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|                                      |
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|  1 byte      Acknowledgement         |
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|______________________________________|
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|                                      |
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|  1 byte      Data size               |
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|======================================|
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|                                      |
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|  1 byte      Data word               |
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|______________________________________|
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|                                      |
␈↓ α∧␈↓ε␈↓ αT␈↓ βl| (specified                           |
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|  by data     Additional data bytes   |
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|  size byte)                          |
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|                                      |
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|======================================|
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|                                      |
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|  2 bytes     Packet checksum         |
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|                                      |
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|======================================|
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|                                      |
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|  2 bytes     EOP framing mark        |
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|                                      |
␈↓ α∧␈↓ε␈↓ αT␈↓ βl|______________________________________|



















␈↓ α∧␈↓␈↓ ε$6␈↓ 
T
␈↓ α∧␈↓Host-Host Protocol␈↓ ¬?␈↓↓Dialnet Protocols␈↓␈↓ 	*July 28, 1978


␈↓ α∧␈↓ε␈↓ αT␈↓¬␈↓ ¬∞Host-Host Op-Codes␈↓ 

␈↓ α∧␈↓␈↓ αTIn␈α∃the␈α∃descriptions␈α⊗below,␈α∃certain␈α∃arguments␈α⊗are␈α∃passed␈α∃along␈α⊗with␈α∃the
␈↓ α∧␈↓commands.␈α These␈αarguments␈αare␈αlisted␈αin␈α
the␈αorder␈αin␈αwhich␈αthey␈αoccur,␈αalong␈α
with
␈↓ α∧␈↓their byte size.  They all occur in the DATA field of the packet.

␈↓ α∧␈↓␈↓ αT000     NOP (No-op)

␈↓ α∧␈↓␈↓ αTThis␈αop␈αcode␈αis␈αa␈αno-operation␈αand␈αshould␈αbe␈αignored␈αby␈αthe␈αreceiver␈αexcept
␈↓ α∧␈↓that␈α∂the␈α∂packet␈α∂still␈α∂has␈α∂to␈α⊂be␈α∂acknowledged.␈α∂ It␈α∂is␈α∂used␈α∂to␈α∂acknowledge␈α⊂a␈α∂packet
␈↓ α∧␈↓without doing anything else.

␈↓ α∧␈↓␈↓ αT001     RPC (Request Process Connection)
␈↓ α∧␈↓␈↓ β$(optional) 8 bytes of process ID
␈↓ α∧␈↓␈↓ β$(optional) 1 byte of initial window size

␈↓ α∧␈↓␈↓ αTThis␈αis␈αthe␈αestablish␈αconnection␈αop␈α
code.␈α It␈αserves␈αa␈αdual␈αpurpose;␈α
to␈αrequest
␈↓ α∧␈↓establishing␈αa␈α
connection,␈αand␈α
to␈αconfirm␈α
establishing␈αa␈α
connection.␈α In␈α
the␈αfirst␈α
case,
␈↓ α∧␈↓the␈α
data␈αarea␈α
contains␈αan␈α
8.-byte␈α
␈↓↓process␈αID␈↓,␈α
which␈αis␈α
a␈α
handle␈αto␈α
the␈αremote␈α
process
␈↓ α∧␈↓the␈α∂sender␈α∞wishes␈α∂to␈α∂connect␈α∞to.␈α∂ In␈α∞the␈α∂latter␈α∂case,␈α∞no␈α∂process␈α∞ID␈α∂is␈α∂specified.␈α∞ A
␈↓ α∧␈↓single byte may follow the process ID to specify an initial window size.

␈↓ α∧␈↓␈↓ αT002     CLS (Close Connection)

␈↓ α∧␈↓␈↓ αTThis␈αis␈αthe␈αterminate␈αconnection␈αop␈αcode.␈α It␈αmay␈αeither␈αterminate␈αan␈αexisting
␈↓ α∧␈↓connection or abort a request for one.

␈↓ α∧␈↓␈↓ αT003     WIN (set WINdow size)
␈↓ α∧␈↓␈↓ β$1 byte of window size

␈↓ α∧␈↓␈↓ αTThis␈α∞op␈α∂code␈α∞sets␈α∂the␈α∞input␈α∂window␈α∞size;␈α∞ie,␈α∂it␈α∞suggests␈α∂to␈α∞the␈α∂receiver␈α∞how
␈↓ α∧␈↓many␈α
packets␈α∞it␈α
may␈α
send␈α∞before␈α
waiting␈α
for␈α∞an␈α
acknowledgement.␈α∞ The␈α
minimum
␈↓ α∧␈↓(and␈α⊂default)␈α⊂window␈α⊂size␈α⊂is␈α⊂2␈α⊂packets.␈α⊂ The␈α⊂absolute␈α⊂maximum␈α⊂window␈α⊂is␈α∂127.;
␈↓ α∧␈↓however,␈α
many␈αsystems␈α
may␈αwant␈α
to␈αset␈α
a␈αsmaller␈α
maximum␈αwindow.␈α
 At␈αStanford,
␈↓ α∧␈↓the system maximum is 16. packets.

␈↓ α∧␈↓␈↓ αT004     MSG (MeSsaGe)
␈↓ α∧␈↓␈↓ β$0 to 256. bytes of data

␈↓ α∧␈↓␈↓ αTThis␈α⊂is␈α⊂the␈α⊂data␈α⊂transmission␈α⊂op␈α⊃code.␈α⊂ The␈α⊂contents␈α⊂of␈α⊂the␈α⊂data␈α⊃part␈α⊂are
␈↓ α∧␈↓passed to the tertiary process.








␈↓ α∧␈↓␈↓ ε$7␈↓ 
T
␈↓ α∧␈↓Host-Host Protocol␈↓ ¬?␈↓↓Dialnet Protocols␈↓␈↓ 	*July 28, 1978


␈↓ α∧␈↓␈↓ αT005     NAK (Negative AcKnowledgment)

␈↓ α∧␈↓␈↓ αTThis␈αop␈αcode␈αrequests␈αthat␈αthe␈αreceiver␈αretransmit␈αall␈αunacknowledged␈αpackets
␈↓ α∧␈↓that it sent.

␈↓ α∧␈↓␈↓ αT006     EOF (End Of File)

␈↓ α∧␈↓␈↓ αTThis␈α
op␈α
code␈α
is␈α
used␈α
to␈α
raise␈α
an␈α
"end␈α
of␈α
file"␈α
condition␈α
on␈α
a␈αparticular␈α
channel
␈↓ α∧␈↓to indicate the end of a data stream.

␈↓ α∧␈↓␈↓ αT007     INT (Interrupt)

␈↓ α∧␈↓␈↓ αTThis␈αop␈αcode␈αis␈αused␈αto␈αraise␈αan␈α"interrupt"␈αcondition␈αon␈αa␈αparticular␈αchannel.
␈↓ α∧␈↓It␈α⊂is␈α⊂intended␈α∂that␈α⊂a␈α⊂user␈α⊂process␈α∂be␈α⊂informed␈α⊂of␈α⊂the␈α∂interrupt␈α⊂twice;␈α⊂when␈α⊂it␈α∂is
␈↓ α∧␈↓received,␈αand␈α
when␈αit␈αoccurs␈α
in␈αthe␈α
data␈αstream␈α(the␈α
latter␈αis␈αto␈α
indicate␈αthe␈α
end␈αof
␈↓ α∧␈↓the "interrupt" condition).

␈↓ α∧␈↓␈↓ αT010     ERR (Error)
␈↓ α∧␈↓␈↓ β$0 to 256. bytes of ASCII error text

␈↓ α∧␈↓␈↓ αTThis␈α
op␈α
code␈α
is␈α
used␈αto␈α
send␈α
a␈α
protocol␈α
error␈αwarning.␈α
 It␈α
is␈α
intended␈α
that␈αa
␈↓ α∧␈↓receiver␈α⊂of␈α⊂such␈α⊃a␈α⊂warning␈α⊂output␈α⊃the␈α⊂contents␈α⊂of␈α⊂the␈α⊃data␈α⊂part␈α⊂of␈α⊃the␈α⊂message
␈↓ α∧␈↓(which␈α
should␈α
be␈α
an␈α
ASCII␈α
string)␈α
on␈α
a␈α
logging␈α
terminal␈α
so␈α
that␈α
the␈α
support␈α
staff
␈↓ α∧␈↓can␈α∞determine␈α∞the␈α∞cause␈α∞of␈α∞the␈α∂problem␈α∞and␈α∞take␈α∞corrective␈α∞action.␈α∞ This␈α∂op␈α∞code
␈↓ α∧␈↓should be used judiciously, since needless usage would only defeat its purpose.
























␈↓ α∧␈↓␈↓ ε$8␈↓ 
T
␈↓ α∧␈↓Host-Host Protocol␈↓ ¬?␈↓↓Dialnet Protocols␈↓␈↓ 	*July 28, 1978


␈↓ α∧␈↓␈↓ αT␈↓¬␈↓ ¬UConnections␈↓ 

␈↓ α∧␈↓␈↓ αTIn␈α
the␈α
discussion␈α
below,␈α
U␈α∞refers␈α
to␈α
the␈α
process␈α
which␈α
initially␈α∞provoked␈α
the
␈↓ α∧␈↓connection␈αor␈α␈↓↓user␈↓,␈α
S␈αrefers␈αto␈α
the␈αthe␈αprocess␈αpassively␈α
waiting␈αfor␈αa␈α
connection␈αor
␈↓ α∧␈↓␈↓↓server␈↓.

␈↓ α∧␈↓␈↓ αTChannel 0 is to be used for ICP.

␈↓ α∧␈↓␈↓ αTFollowing␈α⊃the␈α⊃establishment␈α∩of␈α⊃a␈α⊃dialup␈α⊃connection,␈α∩U␈α⊃should␈α⊃send␈α∩a␈α⊃few
␈↓ α∧␈↓NOP's to S to avoid possible problems with dropped bytes while connecting.

␈↓ α∧␈↓␈↓ αTU␈αmust␈α
know␈αthe␈α
process␈αID␈α
of␈αthe␈α
S␈αit␈α
wants␈αto␈α
connect␈αto.␈α
 As␈αfar␈αas␈α
Dialnet
␈↓ α∧␈↓is␈α
concerned,␈α
process␈α
ID's␈α
are␈α
arbitrary␈α
ASCII␈α
strings.␈α
 However,␈α∞conventions␈α
have
␈↓ α∧␈↓been established as noted elsewhere.

␈↓ α∧␈↓␈↓ αTU␈αsends␈αan␈αRPC␈αwith␈αthe␈αprocess␈αID␈αat␈αS␈αit␈αwants␈αto␈αconnect␈αto.␈α S␈αmay␈αhave
␈↓ α∧␈↓been␈αwaiting␈αfor␈αa␈αconnection,␈αor␈αperhaps␈αwas␈αcreated␈αby␈αS's␈αhost␈αas␈αa␈αresult␈αof␈αthe
␈↓ α∧␈↓RPC.␈α If␈αS␈αdoes␈αnot␈αexist␈αor␈αS's␈αhost␈αis␈αunable␈αor␈αunwilling␈αto␈αmake␈αthe␈αconnection
␈↓ α∧␈↓at the present time, S's host should return a CLS to refuse the connection.

␈↓ α∧␈↓␈↓ αTOtherwise,␈α
S␈α
accepts␈α
the␈α
connection␈α
by␈αsending␈α
an␈α
RPC␈α
back␈α
to␈α
U,␈α
with␈αa␈α
null
␈↓ α∧␈↓process␈α⊂ID.␈α∂ The␈α⊂connection␈α⊂has␈α∂now␈α⊂been␈α∂established,␈α⊂and␈α⊂the␈α∂process␈α⊂ID␈α⊂is␈α∂no
␈↓ α∧␈↓longer␈α
used␈α
by␈α
the␈αhost-host␈α
protocol.␈α
 The␈α
two␈αprocesses␈α
may␈α
now␈α
pass␈α
data␈αback
␈↓ α∧␈↓and forth using the various Host-Host op codes.

␈↓ α∧␈↓␈↓ αTWhen␈αa␈α
host␈αwishes␈αto␈α
terminate␈αa␈αconnection,␈α
it␈αsends␈αa␈α
CLS.␈α Once␈α
a␈αCLS
␈↓ α∧␈↓has␈αbeen␈αsent,␈αno␈αfurther␈αMSG's␈αmay␈αbe␈αsent␈αand␈αany␈αMSG␈αsent␈αshould␈αbe␈αreplied
␈↓ α∧␈↓to␈α∩with␈α∩an␈α∩ERR.␈α∩ Of␈α∩course,␈α∩a␈α∩new␈α∩connection␈α∩may␈α∩be␈α∩established␈α∪with␈α∩RPC.
␈↓ α∧␈↓Breaking the phone connection implies terminating the connection.

␈↓ α∧␈↓␈↓ αTWhen␈α
a␈α
connection␈α
is␈α
terminated,␈α
the␈αrecepient␈α
of␈α
the␈α
CLS␈α
should␈α
send␈αa␈α
CLS
␈↓ α∧␈↓to confirm terminating the process.

















␈↓ α∧␈↓␈↓ ε$9␈↓ 
T
␈↓ α∧␈↓␈↓ ¬?␈↓↓Dialnet Protocols␈↓␈↓ 	*July 28, 1978


␈↓ α∧␈↓␈↓ ∧2␈↓¬Introduction to Tertiary Protocols


␈↓ α∧␈↓␈↓ αTAll␈αprotocol␈αcommunication␈αin␈αthe␈αhigher␈αlevel␈αDialnet␈αprotocols␈α(e.g.␈α MAIL,
␈↓ α∧␈↓File Transfer) uses a list format for messages.  Each message therefore has the form

␈↓ α∧␈↓␈↓ αT(<identifier> <item> ... <item>)

␈↓ α∧␈↓␈↓ αTwhere␈α∞the␈α
items␈α∞themselves␈α
are␈α∞either␈α
identifiers␈α∞or␈α
have␈α∞a␈α∞similar␈α
structure.
␈↓ α∧␈↓The object of this scheme is to ensure flexibility.

␈↓ α∧␈↓␈↓ αTSuppose,␈αfor␈αexample,␈αthat␈αone␈αof␈α
the␈αitems␈αin␈αa␈αprotocol␈αmessage␈αdesignates␈α
a
␈↓ α∧␈↓user␈α⊂name.␈α⊃ Initial␈α⊂designs␈α⊃of␈α⊂Dialnet␈α⊂may␈α⊃allow␈α⊂only␈α⊃a␈α⊂character␈α⊃string␈α⊂without
␈↓ α∧␈↓parentheses␈α∞like␈α∂SMITH␈α∞to␈α∂designate␈α∞the␈α∞user.␈α∂ Later␈α∞this␈α∂might␈α∞be␈α∂elaborated␈α∞to
␈↓ α∧␈↓also␈α
allow␈α
a␈α
complex␈α
designator␈α
like␈α
(SUCCESSOR␈α
SMITH)␈α
to␈α
designate␈α
the␈α
person
␈↓ α∧␈↓who has replaced SMITH in this job assignment.

␈↓ α∧␈↓␈↓ αTThere␈α⊂is␈α⊃no␈α⊂present␈α⊃intention␈α⊂that␈α⊂the␈α⊃Dialnet␈α⊂protocols␈α⊃will␈α⊂be␈α⊃subject␈α⊂to
␈↓ α∧␈↓rapid␈αelaboration.␈α The␈αpresent␈αobject␈αis␈αmerely␈αto␈αbuild␈αthese␈αprotocols␈αso␈αthat␈αthey
␈↓ α∧␈↓will␈α
not␈αbe␈α
subject␈α
to␈αblind␈α
alleys.␈α
 Therefore,␈αthere␈α
are␈α
no␈αfixed␈α
size␈α
fields,␈αand␈α
item
␈↓ α∧␈↓that␈αis␈αinitially␈α
represented␈αby␈αan␈α
atomic␈αname␈αmay␈αlater␈α
be␈αreplaced␈αby␈α
some␈αkind
␈↓ α∧␈↓of␈αexpression,␈αand␈αnew␈αterms␈αmay␈αbe␈αadjoined␈αto␈αlists.␈α Thus␈αif␈αan␈αitem␈αis␈αpresently
␈↓ α∧␈↓denoted␈α
by␈α
a␈α
three␈α
term␈αlist,␈α
an␈α
elaborated␈α
protocol␈α
may␈αlater␈α
call␈α
for␈α
a␈α
four␈αitem␈α
list,
␈↓ α∧␈↓but␈αif␈αthe␈αsame␈αinitial␈αidentifier␈αis␈αused,␈αit␈αshould␈αstill␈αbe␈αpossible␈αfor␈αa␈αrecipient␈αto
␈↓ α∧␈↓ignore the fourth item and still use the message.

␈↓ α∧␈↓␈↓ αTWe␈αbelieve␈αthat␈αthese␈αconventions,␈αat␈αslight␈αcost␈αin␈αinitial␈αimplementation,␈αwill
␈↓ α∧␈↓make future improvements easy should they be required.




















␈↓ α∧␈↓␈↓ ε≥10␈↓ 
T
␈↓ α∧␈↓␈↓ ¬?␈↓↓Dialnet Protocols␈↓␈↓ 	*July 28, 1978


␈↓ α∧␈↓␈↓ ¬β␈↓¬File Transfer Protocol


␈↓ α∧␈↓␈↓ αT␈↓¬␈↓ ¬PIntroduction␈↓ 

␈↓ α∧␈↓␈↓ αTThe␈α∃␈↓↓File␈α∀Transfer␈α∃Protocol␈↓␈α∀(FTP)␈α∃provides␈α∀Dialnet␈α∃hosts␈α∀with␈α∃a␈α∃set␈α∀of
␈↓ α∧␈↓commands for transmission of files among them.

␈↓ α∧␈↓␈↓ αTBecause␈α∞we␈α∞count␈α∞on␈α∞quite␈α∞different␈α
systems␈α∞using␈α∞Dialnet,␈α∞it␈α∞is␈α∞necessary␈α
to
␈↓ α∧␈↓establish␈α
a␈αsmall␈α
set␈αof␈α
essential␈αcommands␈α
and␈αreplies␈α
that␈αare␈α
implemented␈α
by␈αall
␈↓ α∧␈↓of␈α
them␈α
in␈αorder␈α
to␈α
make␈αpossible␈α
the␈α
communication␈α
between␈αany␈α
two␈α
sites.␈α On␈α
top
␈↓ α∧␈↓of␈α∞this,␈α
additional␈α∞commands␈α∞are␈α
defined␈α∞that␈α∞enchance␈α
data␈α∞transfer␈α∞between␈α
two
␈↓ α∧␈↓similar hosts.

␈↓ α∧␈↓␈↓ αTFTP␈α⊗commands␈α↔consist␈α⊗of␈α⊗standard␈α↔8-bit␈α⊗ASCII␈α⊗strings.␈α↔ Any␈α⊗number
␈↓ α∧␈↓appearing in a command will always be decimal.

␈↓ α∧␈↓␈↓ αTThe␈α∞interactions␈α∞between␈α∞the␈α∞various␈α∞parties␈α∞in␈α∞an␈α∞FTP␈α∞transaction␈α∞may␈α∞be
␈↓ α∧␈↓best described by the following diagram:  ␈↓ε
␈↓ α∧␈↓ε␈↓ αT           __________            __________
␈↓ α∧␈↓ε␈↓ αT           |        |   Data     |        |
␈↓ α∧␈↓ε␈↓ αT     ----->|(Output)|>---------->|(Input) |>--
␈↓ α∧␈↓ε␈↓ αT     !     |        | Channel(1) |        |  !
␈↓ α∧␈↓ε␈↓ αT     !     |        |            |        |  !
␈↓ α∧␈↓ε␈↓ αT     !     |        |            |        |  !
␈↓ α∧␈↓ε␈↓ αT     !     |        |  Command   |        |  !     _______
␈↓ α∧␈↓ε␈↓ αT     !     | Server |<==========>| User   |<======>| User|
␈↓ α∧␈↓ε␈↓ αT     !     | Process| Channel(0) | Process|  !     |_____|
␈↓ α∧␈↓ε␈↓ αT     ∧     |        |            |        |  !
␈↓ α∧␈↓ε␈↓ αT________   |        |            |        |  !   __________
␈↓ α∧␈↓ε␈↓ αT| File |   |        |   Data     |        |  --->|  File  |
␈↓ α∧␈↓ε␈↓ αT|System|<-<|(Input) |<----------<|(Output)|<----<| System |
␈↓ α∧␈↓ε␈↓ αT|______|   |________| Channel(2) |________|      |________|

␈↓ α∧␈↓␈↓ αTUnder␈α_request␈α→from␈α_the␈α→user␈α_process,␈α_the␈α→user␈α_program␈α→establishes␈α_a
␈↓ α∧␈↓connection␈α∃with␈α⊗the␈α∃desired␈α∃server.␈α⊗ Channel␈α∃0␈α∃is␈α⊗employed␈α∃for␈α⊗exchange␈α∃of
␈↓ α∧␈↓commands␈αand␈α
replies␈αbetween␈α
the␈αuser␈αand␈α
server␈αprograms.␈α
 When␈αa␈αconnection␈α
is
␈↓ α∧␈↓established,␈α∞the␈α∞server␈α∞sends␈α∞a␈α∞"reply"␈α∞consisting␈α∞of␈α∞a␈α∞greeting␈α∞message␈α∞(which␈α
can
␈↓ α∧␈↓contain anything, such as system name, etc.).

␈↓ α∧␈↓␈↓ αTAt␈α
this␈α
point␈α
both␈α
sites␈αmust␈α
reach␈α
some␈α
agreement␈α
about␈α
the␈αcharacteristics␈α
of
␈↓ α∧␈↓the␈α
flow␈αof␈α
data␈α
between␈αthem␈α
so␈α
that␈αthe␈α
transferred␈α
data␈αis␈α
interpreted␈α
in␈αthe␈α
same
␈↓ α∧␈↓way␈α
at␈α
both␈α
ends␈α
of␈α
the␈α
connection.␈α
 This␈α
is␈α
the␈α
purpose␈α
of␈α
the␈α
DATA␈α
command.
␈↓ α∧␈↓The␈αagreement␈αmay␈αbe␈αrenegotiated␈αat␈αany␈αtime␈αin␈αwhich␈αno␈αdata␈αtransmission␈αis␈αin
␈↓ α∧␈↓progress.  The user may then issue service requests thru the command channel.

␈↓ α∧␈↓␈↓ αTData␈αis␈αtransferred␈αon␈αthe␈αdata␈αchannels.␈α When␈αthe␈αserver␈αreceives␈αa␈αrequest
␈↓ α∧␈↓to␈α
retrieve␈α
a␈α
file,␈α
it␈α∞tries␈α
to␈α
obtain␈α
the␈α
file␈α
and,␈α∞if␈α
everything␈α
goes␈α
right,␈α
it␈α∞sends␈α
a
␈↓ α∧␈↓positive␈αreply␈αon␈αchannel␈α0␈αand␈αstarts␈αsending␈αthe␈αdata␈αon␈αchannel␈α1.␈α Upon␈αreceipt


␈↓ α∧␈↓␈↓ ε≥11␈↓ 
T
␈↓ α∧␈↓File Transfer Protocol␈↓ ¬?␈↓↓Dialnet Protocols␈↓␈↓ 	*July 28, 1978


␈↓ α∧␈↓of␈α∞the␈α∞reply,␈α∞the␈α∞user␈α∞will␈α∞start␈α∞taking␈α∞packets␈α∞from␈α∞channel␈α∞1␈α∞and␈α∞will␈α∞eventually
␈↓ α∧␈↓store␈αthe␈αdata␈αin␈αits␈αfile␈αsystem.␈α When␈αa␈αstore␈αor␈αappend␈αoperations␈αare␈αrequested␈α
it
␈↓ α∧␈↓is␈α∞the␈α∞user␈α
program␈α∞which␈α∞gets␈α
the␈α∞file␈α∞and␈α
sends␈α∞it␈α∞to␈α
the␈α∞server␈α∞thru␈α∞channel␈α
2.
␈↓ α∧␈↓After␈α
the␈αrequest,␈α
the␈α
server␈αis␈α
listening␈α
to␈αthis␈α
channel␈α
and␈αwhen␈α
the␈αpackets␈α
arrive,
␈↓ α∧␈↓it will store the data in its file system.

␈↓ α∧␈↓␈↓ αTData transmission is terminated by any of the following reasons:

␈↓ α∧␈↓␈↓ β$-␈αThe␈αreceiver␈αgets␈αan␈αend␈αof␈αfile␈αon␈αthat␈αchannel.␈α This␈αis
␈↓ α∧␈↓␈↓ β$the normal termination for a successful data transfer.

␈↓ α∧␈↓␈↓ β$-␈α
An␈α
interrupt␈α∞has␈α
been␈α
issued␈α∞on␈α
the␈α
data␈α∞channel.␈α
 Any
␈↓ α∧␈↓␈↓ β$data previously received in that transmission is discarded.

␈↓ α∧␈↓␈↓ β$-␈α
The␈α
command␈α
channel␈αis␈α
closed.␈α
 The␈α
command␈αchannel
␈↓ α∧␈↓␈↓ β$may␈αbe␈αclosed␈αby␈αthe␈αserver␈αat␈αany␈αtime,␈αbut␈αit␈αwill␈αtypically
␈↓ α∧␈↓␈↓ β$do␈α∂so␈α∞only␈α∂after␈α∞a␈α∂request␈α∞from␈α∂the␈α∞user␈α∂who␈α∞will␈α∂send␈α∞it
␈↓ α∧␈↓␈↓ β$when finished using the FTP service.































␈↓ α∧␈↓␈↓ ε≥12␈↓ 
T
␈↓ α∧␈↓File Transfer Protocol␈↓ ¬?␈↓↓Dialnet Protocols␈↓␈↓ 	*July 28, 1978


␈↓ α∧␈↓␈↓ αT␈↓¬␈↓ ¬GFTP Replies␈↓ 

␈↓ α∧␈↓␈↓ αTThe␈α
following␈α
pages␈α∞contain␈α
a␈α
description␈α
of␈α∞the␈α
commands␈α
available␈α∞in␈α
the
␈↓ α∧␈↓Dialnet File Transfer Protocol and the corresponding set of replies.

␈↓ α∧␈↓␈↓ αTIt␈α
is␈α
strongly␈α
recommended␈α∞that␈α
␈↓↓all␈↓␈α
the␈α
commands␈α
be␈α∞implemented,␈α
although
␈↓ α∧␈↓clearly not all have the same importance.

␈↓ α∧␈↓␈↓ αTThere␈αare␈αonly␈αfour␈αpossible␈αreplies.␈α In␈αeach␈αof␈αthem␈αthe␈αfirst␈αitem␈αidentifies
␈↓ α∧␈↓the␈α
reply.␈α The␈α
second␈α
item␈αis␈α
a␈α
list␈αwhich␈α
contains␈αa␈α
string␈α
which␈αin␈α
most␈α
cases␈αis
␈↓ α∧␈↓passed␈α∂to␈α∂the␈α∂user␈α∂without␈α∂further␈α∂processing.␈α∂ Hence,␈α∂there␈α∂is␈α∂a␈α∂choice␈α∂as␈α∂to␈α∂the
␈↓ α∧␈↓amount of information to return in a reply.

␈↓ α∧␈↓␈↓ αTThe replies are:

␈↓ α∧␈↓␈↓ αT␈↓↓(OK (<optional-text>))␈↓

␈↓ α∧␈↓␈↓ αTThe␈α⊃command␈α⊃has␈α⊂been␈α⊃accepted␈α⊃as␈α⊂issued␈α⊃and␈α⊃will␈α⊃cause␈α⊂the
␈↓ α∧␈↓␈↓ β$desired␈α
effect.␈α
 If␈α
the␈α
command␈α
requires␈α
two␈α
replies,␈α
this␈αis
␈↓ α∧␈↓␈↓ β$the primary positive reply.

␈↓ α∧␈↓␈↓ αT␈↓↓(DONE (<optional-text>))␈↓

␈↓ α∧␈↓␈↓ αTThis␈α∞is␈α∞the␈α∞secondary␈α∂reply␈α∞for␈α∞a␈α∞data␈α∞transfer␈α∂command␈α∞whose
␈↓ α∧␈↓␈↓ β$primary␈α⊗reply␈α⊗was␈α⊗positive.␈α⊗ It␈α⊗indicates␈α⊗that␈α⊗the␈α∃data
␈↓ α∧␈↓␈↓ β$transfer is finished.

␈↓ α∧␈↓␈↓ αT␈↓↓(BUSY (<optional-text>))␈↓

␈↓ α∧␈↓␈↓ αTThe␈α
server␈α
cannot␈α
attend␈α
the␈α
request␈α
but␈α
if␈α
you␈α
keep␈α
trying␈α
it␈α
may
␈↓ α∧␈↓␈↓ β$eventually give you the service.

␈↓ α∧␈↓␈↓ αT␈↓↓(FAILED (<optional-text>))␈↓

␈↓ α∧␈↓␈↓ αTYou␈α∂are␈α∂losing␈α∂with␈α∂this␈α∂command.␈α∂ The␈α∂argument␈α∂will␈α⊂tell␈α∂the
␈↓ α∧␈↓␈↓ β$reason.













␈↓ α∧␈↓␈↓ ε≥13␈↓ 
T
␈↓ α∧␈↓File Transfer Protocol␈↓ ¬?␈↓↓Dialnet Protocols␈↓␈↓ 	*July 28, 1978


␈↓ α∧␈↓␈↓ αT␈↓¬␈↓ ∧mAccess Control Commands␈↓ 

␈↓ α∧␈↓␈↓ αTThe␈αfollowing␈α
commands␈αspecify␈α
access␈αcontrol␈α
identifiers.␈α Some␈α
sites␈αmay␈α
not
␈↓ α∧␈↓require␈α⊗them,␈α⊗but␈α∃if␈α⊗issued␈α⊗they␈α∃should␈α⊗be␈α⊗correct.␈α∃ When␈α⊗needed␈α⊗it␈α⊗is␈α∃the
␈↓ α∧␈↓responsibility␈αof␈αthe␈α
user␈αprogram␈αto␈αmake␈α
sure␈αthat␈αthey␈α
arrive␈αin␈αthe␈αcorrect␈α
order.
␈↓ α∧␈↓Because␈α
the␈α
server␈α
has␈α
the␈α
faculty␈α
to␈α
close␈α
the␈α
connection␈α
at␈α
any␈α
time,␈α
it␈α∞may␈α
very
␈↓ α∧␈↓well do so after several unsuccessful log-in trials.

␈↓ α∧␈↓␈↓ αTI.      (USER <user-id>)

␈↓ α∧␈↓␈↓ αTWith␈α⊃this␈α⊃command␈α⊃the␈α∩user␈α⊃identifies␈α⊃himself␈α⊃to␈α∩the␈α⊃server␈α⊃so␈α⊃that␈α∩it␈α⊃is
␈↓ α∧␈↓granted␈α
access␈α
to␈α
its␈α∞file␈α
system.␈α
 Some␈α
sites␈α
might␈α∞require␈α
this␈α
command␈α
to␈α∞be␈α
the
␈↓ α∧␈↓first␈α
command␈αthru␈α
the␈α
connection␈αand␈α
may␈α
even␈αrequire␈α
a␈α
complete␈αlog-in␈α
sequence
␈↓ α∧␈↓with␈α
a␈α
password␈α
and/or␈αan␈α
account␈α
number.␈α
 A␈α
new␈αUSER␈α
command␈α
may␈α
be␈αsent␈α
at
␈↓ α∧␈↓any␈αtime,␈αin␈αwhich␈αthere␈αis␈αno␈α
data␈αtransmission,␈αto␈αchange␈αthe␈αaccess␈αcontrol␈α
and/or
␈↓ α∧␈↓accounting information.  Transfer parameters are unchanged by this command.

␈↓ α∧␈↓␈↓ αTReplies:

␈↓ α∧␈↓␈↓ αT␈↓↓(OK)␈↓

␈↓ α∧␈↓␈↓ αTThe␈α⊗user␈α⊗has␈α∃successfully␈α⊗logged␈α⊗into␈α∃the␈α⊗foreign␈α⊗host.␈α∃ No
␈↓ α∧␈↓␈↓ β$password is required.

␈↓ α∧␈↓␈↓ αT␈↓↓(OK (PASSWORD?))␈↓

␈↓ α∧␈↓␈↓ αTThe␈α<user-id>␈αwas␈αaccepted␈αbut␈αa␈αcorrect␈αpassword␈αis␈αrequired␈αto
␈↓ α∧␈↓␈↓ β$continue the log-in process.

␈↓ α∧␈↓␈↓ αT␈↓↓(BUSY (<reason>))␈↓

␈↓ α∧␈↓␈↓ αT␈↓↓(FAILED (<reason>))␈↓


␈↓ α∧␈↓␈↓ αTII.     (PASSWORD <password>)

␈↓ α∧␈↓␈↓ αTThe argument is a character string specifying the user's password.

␈↓ α∧␈↓␈↓ αTReplies:

␈↓ α∧␈↓␈↓ αT␈↓↓(OK)␈↓

␈↓ α∧␈↓␈↓ αTUser log-in completed.

␈↓ α∧␈↓␈↓ αT␈↓↓(OK (ACCOUNT?))␈↓

␈↓ α∧␈↓␈↓ αTThe␈α∪<password>␈α∪was␈α∪accepted␈α∪but␈α∪an␈α∪account␈α∀specification␈α∪is
␈↓ α∧␈↓␈↓ β$required to continue the log-in process.

␈↓ α∧␈↓␈↓ ε≥14␈↓ 
T
␈↓ α∧␈↓File Transfer Protocol␈↓ ¬?␈↓↓Dialnet Protocols␈↓␈↓ 	*July 28, 1978


␈↓ α∧␈↓␈↓ αT␈↓↓(FAILED (<reason>))␈↓


␈↓ α∧␈↓␈↓ αTIII.    (ACCOUNT <account>)

␈↓ α∧␈↓␈↓ αTThe argument is a string identifying the user's account.

␈↓ α∧␈↓␈↓ αTReplies:

␈↓ α∧␈↓␈↓ αT␈↓↓(OK)␈↓

␈↓ α∧␈↓␈↓ αTEven␈αif␈αthe␈αserver␈αhas␈αno␈αaccounting␈αservice␈αthis␈αreply␈αshould␈αbe
␈↓ α∧␈↓␈↓ β$sent in case a fixed sequence has been issued by the user.

␈↓ α∧␈↓␈↓ αT␈↓↓(FAILED (<reason>))␈↓


␈↓ α∧␈↓␈↓ αTIV.     (BYE)

␈↓ α∧␈↓␈↓ αTThe␈α∞user␈α
sends␈α∞this␈α
message␈α∞before␈α
closing␈α∞the␈α
connection,␈α∞to␈α
say␈α∞it␈α∞is␈α
going
␈↓ α∧␈↓away.

␈↓ α∧␈↓␈↓ αTReplies:

␈↓ α∧␈↓␈↓ αT␈↓↓(OK)␈↓
























␈↓ α∧␈↓␈↓ ε≥15␈↓ 
T
␈↓ α∧␈↓File Transfer Protocol␈↓ ¬?␈↓↓Dialnet Protocols␈↓␈↓ 	*July 28, 1978


␈↓ α∧␈↓␈↓ αT␈↓¬␈↓ ¬	The DATA Command␈↓ 

␈↓ α∧␈↓␈↓ αTV.      (DATA <byte-size> <type> <structure>)

␈↓ α∧␈↓␈↓ αTThe␈αsystems␈αthat␈α
communicate␈αby␈αmeans␈αof␈α
Dialnet␈αmay␈αhave␈α
different␈αword
␈↓ α∧␈↓(byte)␈α
lengths,␈α
employ␈α
different␈α
data␈α
representations␈α
and␈α
structure␈α
their␈α
stored␈αdata
␈↓ α∧␈↓in␈α
various␈αways.␈α
 To␈αsolve␈α
this␈αproblem␈α
we␈αdefine␈α
some␈αstandard␈α
default␈α
values␈αof
␈↓ α∧␈↓these␈α
parameters␈α
and␈α
employ␈α
the␈α
DATA␈α
command␈α
to␈α
change␈α
them␈α
in␈α
cases␈αin␈α
which
␈↓ α∧␈↓the␈α
standards␈α∞are␈α
not␈α∞adequate.␈α
 All␈α
users␈α∞of␈α
Dialnet␈α∞must␈α
implement␈α∞the␈α
defaults,
␈↓ α∧␈↓that␈αis,␈αthey␈αmust␈αbe␈αable␈αto␈αsend␈αand␈αreceive␈αmeaningful␈αdata␈αin␈αcontiguous␈αlogical
␈↓ α∧␈↓units␈α⊂of␈α⊃8␈α⊂bits,␈α⊂which␈α⊃can␈α⊂be␈α⊃interpreted␈α⊂as␈α⊂standard␈α⊃ASCII␈α⊂characters␈α⊃and␈α⊂are
␈↓ α∧␈↓always transferred in groups delimited by end-of-file characters.

␈↓ α∧␈↓␈↓ αTWhen␈αa␈αconnection␈αis␈αfirst␈αestablished,␈αthe␈αserver␈αwill␈αassume␈αthat␈αthe␈αdefault
␈↓ α∧␈↓values␈α∂will␈α∂be␈α∂used␈α∂and␈α∂will␈α∞be␈α∂prepared␈α∂to␈α∂make␈α∂the␈α∂necessary␈α∂data␈α∞conversions
␈↓ α∧␈↓from␈α∞his␈α∞own␈α∂to␈α∞the␈α∞default␈α∞form␈α∂when␈α∞sending,␈α∞and␈α∞from␈α∂the␈α∞default␈α∞to␈α∂its␈α∞own
␈↓ α∧␈↓when receiving.

␈↓ α∧␈↓␈↓ αTOften␈αuser␈αand␈αserver␈α
will␈αbe␈αsimilar␈αmachines␈α
and␈αconverting␈αthe␈αdata␈αto␈α
the
␈↓ α∧␈↓standard␈α
default␈α
form␈α
will␈αbe␈α
unnecessary.␈α
 The␈α
DATA␈αcommand␈α
allows␈α
a␈α
user␈αto
␈↓ α∧␈↓tell␈α∂which␈α∂are␈α∂the␈α∂parameters␈α∂that␈α∂he␈α∂wants␈α∂the␈α∂server␈α∂to␈α∂employ␈α∂on␈α∂the␈α∂data␈α∂in
␈↓ α∧␈↓order␈αto␈αminimize␈αthe␈αuser's␈αdata␈αconversion␈αeffort.␈α It␈αcan␈αbe␈αissued␈αas␈αmany␈αtimes
␈↓ α∧␈↓as␈α∂desired␈α∂but␈α∂not␈α∂during␈α∞a␈α∂data␈α∂transmission.␈α∂ Of␈α∂course,␈α∞it␈α∂can␈α∂also␈α∂be␈α∂used␈α∞to
␈↓ α∧␈↓return to the standard default form.

␈↓ α∧␈↓␈↓ αTAll␈αthe␈αarguments␈αshould␈α
be␈αgiven,␈αand␈αprecisely␈α
in␈αthe␈αspecified␈αorder.␈α
 They
␈↓ α∧␈↓stand for:

␈↓ α∧␈↓␈↓ αT<byte-size>␈α
is␈α
a␈α
decimal␈α
number␈α
specifying␈α
the␈α
desired␈αlogical␈α
byte
␈↓ α∧␈↓␈↓ β$size,␈α∞i.e.,␈α∞starting␈α∞with␈α∞the␈α
first␈α∞bit␈α∞transmitted␈α∞on␈α∞the␈α
data
␈↓ α∧␈↓␈↓ β$channel,␈α∂every␈α∂<byte-size>␈α∂bits␈α∂are␈α∂a␈α∂complete␈α⊂entity.␈α∂The
␈↓ α∧␈↓␈↓ β$default byte size is 8.

␈↓ α∧␈↓␈↓ αT<type> may be:

␈↓ α∧␈↓␈↓ β$ASCII␈α∀Data␈α∀consist␈α∀of␈α∀a␈α∀sequence␈α∀of␈α∀contiguous
␈↓ α∧␈↓␈↓ βtstandard␈α8-bit␈αASCII␈αcharacter.␈αThe␈αend␈αof␈αa
␈↓ α∧␈↓␈↓ βtline␈αof␈αtext␈αis␈αdenoted␈αby␈αa␈αsequence␈α
<CRLF>.
␈↓ α∧␈↓␈↓ βtThis is the default type.

␈↓ α∧␈↓␈↓ β$EBCDIC␈α
Data␈α
consist␈α
of␈α
8-bit␈α
EBCDIC␈αcharacters.
␈↓ α∧␈↓␈↓ βtThe␈α∩end␈α∩of␈α∩a␈α∩line␈α⊃of␈α∩text␈α∩is␈α∩denoted␈α∩by␈α⊃a
␈↓ α∧␈↓␈↓ βt<NL> character.

␈↓ α∧␈↓␈↓ β$IMAGE␈α
Data␈αconsist␈α
of␈αa␈α
stream␈αof␈α
contiguous␈αbits
␈↓ α∧␈↓␈↓ βtthat␈α∞should␈α
be␈α∞taken␈α
in␈α∞contiguous␈α∞groups␈α
of
␈↓ α∧␈↓␈↓ βtsize␈α⊂given␈α⊂by␈α⊂the␈α⊂value␈α⊂of␈α⊂<byte-size>.␈α⊂This


␈↓ α∧␈↓␈↓ ε≥16␈↓ 
T
␈↓ α∧␈↓File Transfer Protocol␈↓ ¬?␈↓↓Dialnet Protocols␈↓␈↓ 	*July 28, 1978


␈↓ α∧␈↓␈↓ βttype␈α_is␈α_intended␈α_for␈α→efficient␈α_transmission
␈↓ α∧␈↓␈↓ βtbetween similar machines.

␈↓ α∧␈↓␈↓ αT<structure> may be:

␈↓ α∧␈↓␈↓ β$FILE␈α
File␈α
(no␈α
internal␈α
structure).␈α
The␈α
end␈α
of␈α
a␈α
file␈α
is
␈↓ α∧␈↓␈↓ βtmarked by an end-of-file packet.

␈↓ α∧␈↓␈↓ β$RECORD␈αThe␈αdata␈αis␈αgrouped␈αin␈αrecords␈αdelimited
␈↓ α∧␈↓␈↓ βtby␈α⊃an␈α⊃EOR␈α⊃(end␈α⊂of␈α⊃record)␈α⊃marker.␈α⊃At␈α⊂the
␈↓ α∧␈↓␈↓ βtend␈α∞of␈α∞the␈α∞file␈α∞there␈α∞is␈α∞an␈α∂end-of-file␈α∞packet
␈↓ α∧␈↓␈↓ βtafter the last EOR.

␈↓ α∧␈↓␈↓ αTIf␈α∞a␈α∂site␈α∞receives␈α∞and␈α∂stores␈α∞a␈α∂file␈α∞while␈α∞certain␈α∂parameter␈α∞values␈α∂are␈α∞active
␈↓ α∧␈↓and␈αis␈α
later␈αrequested␈αto␈α
return␈αthat␈α
file␈αusing␈αthe␈α
same␈αvalues,␈α
the␈αinput␈αand␈α
output
␈↓ α∧␈↓copies␈αshould␈α
be␈αidentical.␈α
Also␈αwe␈α
must␈αrequire␈α
that␈αany␈α
transformation␈αsuffered␈α
by
␈↓ α∧␈↓a␈αfile␈αduring␈αthe␈αprocess␈αof␈αstoring␈αit␈αdo␈αnot␈αaffect␈αthe␈αcontents␈αof␈αthat␈αfile␈αif␈αoutput
␈↓ α∧␈↓in another form.

␈↓ α∧␈↓␈↓ αTReplies:

␈↓ α∧␈↓␈↓ αT␈↓↓(OK)␈↓

␈↓ α∧␈↓␈↓ αTGood, the server agrees.

␈↓ α∧␈↓␈↓ αT␈↓↓(BUSY (<reason>))␈↓

␈↓ α∧␈↓␈↓ αTYou are not allowed to change the transfer parameters now.

␈↓ α∧␈↓␈↓ αT␈↓↓(FAILED (<reason>))␈↓

␈↓ α∧␈↓␈↓ αTThe␈α∩server␈α∪may␈α∩not␈α∪have␈α∩implemented␈α∩one␈α∪or␈α∩several␈α∪of␈α∩the
␈↓ α∧␈↓␈↓ β$parameter␈α∀values␈α∀specified␈α∃by␈α∀the␈α∀arguments,␈α∀or␈α∃it␈α∀can
␈↓ α∧␈↓␈↓ β$accept␈αeach␈αof␈αthem␈αin␈αsome␈αcombination␈αbut␈αnot␈α
the␈αthree
␈↓ α∧␈↓␈↓ β$together␈α
as␈α
required␈αin␈α
the␈α
command␈αor␈α
the␈α
arguments␈αare
␈↓ α∧␈↓␈↓ β$not in the correct order, etc.













␈↓ α∧␈↓␈↓ ε≥17␈↓ 
T
␈↓ α∧␈↓File Transfer Protocol␈↓ ¬?␈↓↓Dialnet Protocols␈↓␈↓ 	*July 28, 1978


␈↓ α∧␈↓␈↓ αT␈↓¬␈↓ ∧vFTP Service Commands␈↓ 

␈↓ α∧␈↓␈↓ αTVI.     (RETRIEVE <for-path-name>)

␈↓ α∧␈↓␈↓ αTThis␈α
command␈α
tells␈αthe␈α
server␈α
to␈α
send␈αthe␈α
file␈α
specified␈α
by␈α<for-path-name>
␈↓ α∧␈↓to␈αthe␈αuser.␈α
 Upon␈αreceiving␈αit,␈α
the␈αoutput␈αside␈αof␈α
the␈αserver's␈αprogram␈α
should␈αlook
␈↓ α∧␈↓for␈α
this␈αfile␈α
in␈αthe␈α
server's␈αfile␈α
system.␈α
 Then␈αit␈α
will␈αreport␈α
the␈αresult␈α
of␈α
the␈αlookup
␈↓ α∧␈↓operation␈α
(so␈α
that␈α
the␈α
user's␈α
program␈α
can␈α
be␈α
informed)␈α
and,␈α
if␈α
successful,␈α
will␈α
start
␈↓ α∧␈↓transmitting.␈α At␈α
the␈αend,␈α
a␈αreport␈α
about␈αthe␈α
result␈αof␈α
the␈αtransfer␈α
operation␈αwill␈α
also
␈↓ α∧␈↓be emitted.

␈↓ α∧␈↓␈↓ αTPrimary replies:

␈↓ α∧␈↓␈↓ αT␈↓↓(OK (<text>))␈↓

␈↓ α∧␈↓␈↓ αTThe lookup succeeded and the server has started sending the file.

␈↓ α∧␈↓␈↓ αT␈↓↓(BUSY (<reason>))

␈↓ α∧␈↓↓␈↓ αT(FAILED (<reason>))␈↓

␈↓ α∧␈↓␈↓ αT Secondary replies:

␈↓ α∧␈↓␈↓ αT␈↓↓(DONE (<text>))␈↓

␈↓ α∧␈↓␈↓ αTThe transfer is finished and the data channel closed.

␈↓ α∧␈↓␈↓ αT␈↓↓(STOPPED (<text>))␈↓

␈↓ α∧␈↓␈↓ αTChannel␈α⊂1␈α⊂was␈α⊂closed␈α⊃before␈α⊂an␈α⊂end-of-file␈α⊂had␈α⊃arrived.␈α⊂ The
␈↓ α∧␈↓␈↓ β$part␈α∞of␈α∞the␈α∞file␈α∞that␈α∞had␈α∞already␈α∞been␈α∞transmitted␈α∞(if␈α∞any)
␈↓ α∧␈↓␈↓ β$will␈α⊂not␈α∂be␈α⊂saved,␈α∂i.e.␈α⊂the␈α∂RETRIEVE␈α⊂command␈α⊂will␈α∂not
␈↓ α∧␈↓␈↓ β$have any effect.


␈↓ α∧␈↓␈↓ αTVII.    (STORE <for-path-name>)

␈↓ α∧␈↓␈↓ αTThe␈α∂server␈α∂should␈α⊂open␈α∂a␈α∂file␈α∂named␈α⊂<for-path-name>␈α∂and␈α∂store␈α∂in␈α⊂it␈α∂the
␈↓ α∧␈↓data␈αthat␈αthe␈αuser␈αwill␈αsend.␈αIf␈αa␈αfile␈αwith␈αthat␈αname␈αalready␈αexists␈αat␈αthe␈αserver␈αsite
␈↓ α∧␈↓it will be overwritten, otherwise the server should create it.

␈↓ α∧␈↓␈↓ αTPrimary replies:

␈↓ α∧␈↓␈↓ αT␈↓↓(OK (<text>))␈↓

␈↓ α∧␈↓␈↓ αTThe␈α∪file␈α∪has␈α∪been␈α∪found␈α∩or␈α∪created.␈α∪ The␈α∪server␈α∪is␈α∪ready␈α∩to
␈↓ α∧␈↓␈↓ β$receive the data thru channel 2.


␈↓ α∧␈↓␈↓ ε≥18␈↓ 
T
␈↓ α∧␈↓File Transfer Protocol␈↓ ¬?␈↓↓Dialnet Protocols␈↓␈↓ 	*July 28, 1978


␈↓ α∧␈↓␈↓ αT␈↓↓(BUSY (<reason>))

␈↓ α∧␈↓↓␈↓ αT(FAILED (<reason>))␈↓

␈↓ α∧␈↓␈↓ αTSecondary replies:

␈↓ α∧␈↓␈↓ αT␈↓↓(DONE (<text>))␈↓

␈↓ α∧␈↓␈↓ αTThe␈α
transfer␈αis␈α
finished␈α(an␈α
end-of-file␈αhas␈α
been␈α
received).␈α The
␈↓ α∧␈↓␈↓ β$file is closed and so is data channel 2.

␈↓ α∧␈↓␈↓ αT␈↓↓(STOPPED (<text>))␈↓

␈↓ α∧␈↓␈↓ αTChannel␈α
2␈α∞closed␈α
before␈α∞an␈α
end-of-file␈α
arrived.␈α∞The␈α
part␈α∞of␈α
the
␈↓ α∧␈↓␈↓ β$file␈α∩that␈α∩had␈α∩already␈α∩been␈α∩received␈α∩(if␈α∩any)␈α∩will␈α∪not␈α∩be
␈↓ α∧␈↓␈↓ β$saved.  The STORE command will not have any effect.


␈↓ α∧␈↓␈↓ αTVIII.   (APPEND <for-path-name>)

␈↓ α∧␈↓␈↓ αTThis␈αcommand␈α
tells␈αthe␈αserver␈α
to␈αopen␈αthe␈α
file␈αspecified␈α
by␈α<for-path-name>
␈↓ α∧␈↓for␈α
input␈α
and␈α
append␈αto␈α
it␈α
the␈α
data␈αthat␈α
the␈α
user␈α
will␈α
send␈αthru␈α
channel␈α
2.␈α
 If␈αno␈α
file
␈↓ α∧␈↓exists with that name this command will have the effect of a STORE command.

␈↓ α∧␈↓␈↓ αTPrimary replies:

␈↓ α∧␈↓␈↓ αT␈↓↓(OK (<text>))␈↓

␈↓ α∧␈↓␈↓ αTThe file has been found or created.

␈↓ α∧␈↓␈↓ αT␈↓↓(BUSY (<reason>))

␈↓ α∧␈↓↓␈↓ αT(FAILED (<reason>))␈↓

␈↓ α∧␈↓␈↓ αTSecondary replies:

␈↓ α∧␈↓␈↓ αT␈↓↓(DONE (<text>))␈↓

␈↓ α∧␈↓␈↓ αTThe␈α
transfer␈αis␈α
finished␈α(an␈α
end-of-file␈αhas␈α
been␈α
received).␈α The
␈↓ α∧␈↓␈↓ β$file is closed and so is data channel 2.

␈↓ α∧␈↓␈↓ αT␈↓↓(STOPPED (<text>))␈↓

␈↓ α∧␈↓␈↓ αTChannel␈α2␈α
has␈αbeen␈α
closed␈αbefore␈α
an␈αend-of-file␈α
has␈αarrived.␈α
The
␈↓ α∧␈↓␈↓ β$part␈αof␈αthe␈αfile␈αthat␈αhad␈αalready␈αbeen␈αreceived␈α(if␈α
any)␈αwill
␈↓ α∧␈↓␈↓ β$not␈α
be␈α
saved.␈α
 The␈α∞APPEND␈α
command␈α
will␈α
not␈α∞have␈α
any
␈↓ α∧␈↓␈↓ β$effect.


␈↓ α∧␈↓␈↓ ε≥19␈↓ 
T
␈↓ α∧␈↓File Transfer Protocol␈↓ ¬?␈↓↓Dialnet Protocols␈↓␈↓ 	*July 28, 1978


␈↓ α∧␈↓␈↓ αTIX.     (ABORT)

␈↓ α∧␈↓␈↓ αTThis␈αcommand␈αtells␈αthe␈αserver␈αthat␈αthe␈αfile␈αtransfer␈αrequested␈αby␈αthe␈αprevious
␈↓ α∧␈↓command␈α∂has␈α∂been␈α∂cancelled.␈α∂For␈α∂that␈α∂purpose␈α∂an␈α∂interrupt␈α∂packet␈α∂is␈α∂sent␈α∂to␈α∞the
␈↓ α∧␈↓server␈α∞on␈α∞the␈α∞data␈α∞channel.␈α∞Because␈α∞the␈α∞server␈α∞was␈α∞attending␈α∞that␈α∞channel,␈α∞it␈α∞will
␈↓ α∧␈↓recognize␈α∩the␈α∩packet,␈α∩terminate␈α∩any␈α∩data␈α∩transmission␈α∩or␈α∩reception␈α∩and␈α∩turn␈α⊃its
␈↓ α∧␈↓attention␈αto␈αthe␈αcommand␈αchannel.␈α Any␈αdata␈αreceived␈αso␈αfar␈αwill␈αbe␈αdiscarded.␈αThe
␈↓ α∧␈↓previous␈α
command␈α
will␈αhave␈α
no␈α
effect␈α
on␈αthe␈α
files␈α
of␈α
either␈αthe␈α
user␈α
or␈α
the␈αserver.
␈↓ α∧␈↓Had␈α
the␈α
transfer␈α
already␈α
been␈α
completed␈α
and␈α
the␈α
data␈α
channel␈α
closed,␈α∞the␈α
receiver
␈↓ α∧␈↓would␈α⊃have␈α⊃already␈α⊃closed␈α⊃the␈α⊃file␈α⊃in␈α⊂its␈α⊃file␈α⊃system␈α⊃and␈α⊃no␈α⊃abortion␈α⊃would␈α⊂be
␈↓ α∧␈↓possible.

␈↓ α∧␈↓␈↓ αTOnly␈α∂file␈α∂transfers␈α∂can␈α∂be␈α∂aborted␈α∞because␈α∂there␈α∂is␈α∂no␈α∂control␈α∂on␈α∂the␈α∞other
␈↓ α∧␈↓services from the very first moment in which the corresponding command is issued.

␈↓ α∧␈↓␈↓ αTReplies:

␈↓ α∧␈↓␈↓ αT␈↓↓(OK)

␈↓ α∧␈↓↓␈↓ αT(FAILED (<reason>))␈↓


␈↓ α∧␈↓␈↓ αTX.      (RENAME <for-path-name1> TO <for-path-name2>)

␈↓ α∧␈↓␈↓ αTThe␈α∂server␈α∂is␈α∂instructed␈α∂to␈α∂change␈α∂the␈α∂name␈α∂of␈α∂<for-path-name1>␈α∂to␈α∞<for-
␈↓ α∧␈↓path-name2>.

␈↓ α∧␈↓␈↓ αTReplies:

␈↓ α∧␈↓␈↓ αT␈↓↓(OK)

␈↓ α∧␈↓↓␈↓ αT(BUSY (<reason>))

␈↓ α∧␈↓↓␈↓ αT(FAILED (<reason>))␈↓


␈↓ α∧␈↓␈↓ αTXI.     (DELETE <for-path-name>)

␈↓ α∧␈↓␈↓ αTThe server is instructed to delete the file specified by <for-path-name>.

␈↓ α∧␈↓␈↓ αTReplies:

␈↓ α∧␈↓␈↓ αT␈↓↓(OK)␈↓

␈↓ α∧␈↓␈↓ αTThe file has been deleted.

␈↓ α∧␈↓␈↓ αT␈↓↓(BUSY (<reason>))


␈↓ α∧␈↓␈↓ ε≥20␈↓ 
T
␈↓ α∧␈↓File Transfer Protocol␈↓ ¬?␈↓↓Dialnet Protocols␈↓␈↓ 	*July 28, 1978


␈↓ α∧␈↓↓␈↓ αT(FAILED (<reason>))␈↓


␈↓ α∧␈↓␈↓ αTXI.     (DIRECTORY <for-dir-name>)

␈↓ α∧␈↓␈↓ αTThis␈αcommand␈αasks␈αthe␈αserver␈αfor␈αa␈αlist␈αof␈αthe␈αfiles␈αin␈αthe␈α
directory␈αspecified
␈↓ α∧␈↓by␈α<for-dir-name>.␈αIf␈αno␈αargument␈αis␈αgiven␈αa␈αlist␈αof␈αthe␈αfiles␈αin␈αthe␈αlog-in␈αdirectory
␈↓ α∧␈↓should␈α∩be␈α∪sent.␈α∩The␈α∪information␈α∩will␈α∪be␈α∩contained␈α∪in␈α∩the␈α∪reply␈α∩(sent␈α∪thru␈α∩the
␈↓ α∧␈↓command channel).

␈↓ α∧␈↓␈↓ αTReplies:

␈↓ α∧␈↓␈↓ αT␈↓↓(OK <file-list>)␈↓

␈↓ α∧␈↓␈↓ αT<file-list>␈α
is␈α
the␈αrequested␈α
list␈α
of␈α
files.␈α It␈α
should␈α
be␈αpassed␈α
directly
␈↓ α∧␈↓␈↓ β$to the human user.

␈↓ α∧␈↓␈↓ αT␈↓↓(FAILED (<reason>))␈↓


␈↓ α∧␈↓␈↓ αTXII.    (STATUS)

␈↓ α∧␈↓␈↓ αTWith␈α∂this␈α∞command␈α∂the␈α∞user␈α∂asks␈α∞for␈α∂whatever␈α∞information␈α∂the␈α∂server␈α∞may
␈↓ α∧␈↓want␈αto␈αsend␈αhim.␈α It␈αmay␈αbe␈αissued␈αat␈αany␈αtime.␈α The␈αinformation␈αwill␈αbe␈αsent␈αas␈αa
␈↓ α∧␈↓reply␈α
on␈α
channel␈α
0␈α
(the␈α
command␈α
channel!)␈α
and␈α
is␈α
intended␈α
exclusively␈α
for␈α
human
␈↓ α∧␈↓users.

␈↓ α∧␈↓␈↓ αTReplies:

␈↓ α∧␈↓␈↓ αT␈↓↓(OK <information-list>))␈↓

␈↓ α∧␈↓␈↓ αTThe␈α
contents␈α∞of␈α
the␈α∞<information-list>␈α
should␈α∞be␈α
directly␈α∞sent␈α
to
␈↓ α∧␈↓␈↓ β$the␈αhuman␈αuser␈αfor␈αits␈αinterpretation.␈αThis␈αis␈αthe␈αonly␈αlegal
␈↓ α∧␈↓␈↓ β$reply.















␈↓ α∧␈↓␈↓ ε≥21␈↓ 
T
␈↓ α∧␈↓␈↓ ¬?␈↓↓Dialnet Protocols␈↓␈↓ 	*July 28, 1978


␈↓ α∧␈↓␈↓ ¬m␈↓¬Glossary


␈↓ α∧␈↓␈↓ αTThe␈α∩following␈α∪terms␈α∩are␈α∪used␈α∩in␈α∩this␈α∪document␈α∩and␈α∪are␈α∩defined␈α∪here␈α∩to
␈↓ α∧␈↓remove ambiguity:

␈↓ α∧␈↓␈↓ αTACKNOWLEDGEMENT␈α∂--␈α∂an␈α∞8.-bit␈α∂quantity␈α∂which␈α∞specifies
␈↓ α∧␈↓␈↓ β$the␈α∃packet␈α∃sequence␈α∀number␈α∃of␈α∃the␈α∃highest␈α∀consecutive
␈↓ α∧␈↓␈↓ β$packet␈α#which␈α$has␈α#been␈α#successfully␈α$received.␈α# An
␈↓ α∧␈↓␈↓ β$acknowledgement␈α≤implies␈α≤that␈α≤all␈α≤packets␈α≤with␈α≠lower
␈↓ α∧␈↓␈↓ β$sequence numbers have been received as well.

␈↓ α∧␈↓␈↓ αTBYTE␈α
--␈α
an␈α
8.-bit␈αquantity.␈α
 While␈α
␈↓↓Dialnet␈↓␈α
transmissions␈α
are␈αto
␈↓ α∧␈↓␈↓ β$be␈α
considered␈α
as␈αa␈α
bit␈α
stream,␈αthis␈α
concept␈α
is␈α
convenient␈αto
␈↓ α∧␈↓␈↓ β$use for many reasons.

␈↓ α∧␈↓␈↓ αTBYTE␈αSIZE␈α--␈αthis␈αrefers␈αto␈αthe␈αbyte␈αsize␈αof␈αdata␈αas␈αseen␈αby␈αthe
␈↓ α∧␈↓␈↓ β$host␈α≥computer.␈α≥ All␈α≥␈↓↓Dialnet␈↓␈α≥transmissions␈α≥should␈α≥be
␈↓ α∧␈↓␈↓ β$considered␈α∂bit␈α⊂stream␈α∂transmissions␈α∂sent␈α⊂in␈α∂units␈α⊂of␈α∂8.-bit
␈↓ α∧␈↓␈↓ β$bytes.

␈↓ α∧␈↓␈↓ αTCHANNEL␈α∞--␈α∞an␈α∞8.-bit␈α
quantity␈α∞identifying␈α∞which␈α∞data␈α
stream
␈↓ α∧␈↓␈↓ β$this␈α∞packet␈α∂belongs␈α∞to.␈α∞ Channels␈α∂have␈α∞no␈α∞meaning␈α∂to␈α∞the
␈↓ α∧␈↓␈↓ β$host-host␈α
protocol,␈α
only␈α∞to␈α
higher␈α
level␈α∞protocols.␈α
 Channel
␈↓ α∧␈↓␈↓ β$0 is the channel normally used.

␈↓ α∧␈↓␈↓ αTCHECKSUM␈α--␈α
a␈α16.-bit␈α
quantity␈αcontaining␈α
a␈αpacket␈α
checksum,
␈↓ α∧␈↓␈↓ β$used in error detection.

␈↓ α∧␈↓␈↓ αTCONNECTION␈α⊂--␈α⊂a␈α⊂logical␈α⊂connection␈α⊂between␈α⊂two␈α⊂processes.
␈↓ α∧␈↓␈↓ β$Connections are bidirectional.

␈↓ α∧␈↓␈↓ αTDATA␈α∂--␈α∞an␈α∂arbitrary␈α∞amount␈α∂of␈α∞data␈α∂which␈α∞is␈α∂either␈α∂used␈α∞as
␈↓ α∧␈↓␈↓ β$arguments␈α
in␈α
the␈α
Host-Host␈α
protocol␈α
or␈α
as␈α
data␈α
to␈αbe␈α
passed
␈↓ α∧␈↓␈↓ β$to a process utilizing ␈↓↓Dialnet␈↓.

␈↓ α∧␈↓␈↓ αTDATA␈α
COUNT␈α
--␈αa␈α
8.-bit␈α
quantity␈αindicating␈α
how␈α
many␈αbytes
␈↓ α∧␈↓␈↓ β$are in the data field of the packet after the first data byte.

␈↓ α∧␈↓␈↓ αT␈↓↓Dialnet␈↓␈α
--␈α
a␈α∞communications␈α
protocol␈α
for␈α
data␈α∞transmission␈α
over
␈↓ α∧␈↓␈↓ β$standard␈α∂phone␈α∂lines.␈α∂ This␈α∂term␈α∂also␈α∂refers␈α∂informally␈α∂to
␈↓ α∧␈↓␈↓ β$the set of hosts which implement ␈↓↓Dialnet␈↓.

␈↓ α∧␈↓␈↓ αTEOP␈α
--␈α
a␈α
marker␈α
used␈αto␈α
indicate␈α
end␈α
of␈α
packet.␈α
 EOP␈αconsists␈α
of
␈↓ α∧␈↓␈↓ β$ASCII␈αDLE␈α(220)␈αfollowed␈αby␈αETX␈α(202).␈α It␈αis␈αa␈αviolation
␈↓ α∧␈↓␈↓ β$of␈α
packet␈α
framing␈α
for␈α
a␈α
packet␈α
to␈α
end␈α
with␈α
anything␈αother


␈↓ α∧␈↓␈↓ ε≥22␈↓ 
T
␈↓ α∧␈↓Glossary␈↓ ¬?␈↓↓Dialnet Protocols␈↓␈↓ 	*July 28, 1978


␈↓ α∧␈↓␈↓ β$than␈α⊂an␈α⊂EOP.␈α⊂ A␈α⊂packet␈α⊂is␈α⊂not␈α⊂completely␈α⊃received␈α⊂until
␈↓ α∧␈↓␈↓ β$this␈αcode␈αhas␈αbeen␈αreceived.␈α Note␈αthat␈αthe␈α200␈αbit␈αmust␈αbe
␈↓ α∧␈↓␈↓ β$set for an EOP to be recognized as such.

␈↓ α∧␈↓␈↓ αTHOST␈α
--␈α
a␈α
system␈α
with␈α
␈↓↓Dialnet␈↓-compatible␈α
modems␈αand␈α
␈↓↓Dialnet␈↓-
␈↓ α∧␈↓␈↓ β$support␈α∞software␈α
which␈α∞knows␈α
the␈α∞telephone␈α
number␈α∞of␈α
at
␈↓ α∧␈↓␈↓ β$least one other host.

␈↓ α∧␈↓␈↓ αTHOST-HOST␈α
PROTOCOL␈α
--␈α
The␈α
protocol␈α
which␈αprovides␈α
for
␈↓ α∧␈↓␈↓ β$compatible␈α⊃communication␈α⊂between␈α⊃two␈α⊃processes␈α⊂running
␈↓ α∧␈↓␈↓ β$on (probably) dissimilar hosts.

␈↓ α∧␈↓␈↓ αTLINE␈α⊂TRANSMISSION␈α⊂PROTOCOL␈α⊂--␈α⊂The␈α⊂protocol␈α⊂which
␈↓ α∧␈↓␈↓ β$provides␈αfor␈αerror␈αfree␈αtransmission␈αbetween␈αtwo␈αhosts␈αwith
␈↓ α∧␈↓␈↓ β$a common modem which use the Host-Host protocol.

␈↓ α∧␈↓␈↓ αTOP CODE -- a ␈↓↓Dialnet␈↓ host-host protocol operation code.

␈↓ α∧␈↓␈↓ αTPACKET␈α⊂--␈α⊂a␈α⊂logical␈α⊂unit␈α⊂of␈α⊂data␈α⊂transmitted␈α⊂over␈α⊂a␈α∂␈↓↓Dialnet␈↓
␈↓ α∧␈↓␈↓ β$link.␈α~ The␈α≠packet␈α~is␈α~the␈α≠elementary␈α~unit␈α≠of␈α~␈↓↓Dialnet␈↓
␈↓ α∧␈↓␈↓ β$transmissions.␈α A␈αpacket␈αis␈α
basically␈αdata␈αwith␈αa␈αheader␈α
and
␈↓ α∧␈↓␈↓ β$trailer.

␈↓ α∧␈↓␈↓ αTPACKET␈α≡FRAMING␈α≡--␈α≡a␈α≡technique␈α≡used␈α≡in␈α≡the␈α≥line
␈↓ α∧␈↓␈↓ β$transmission␈α∂protocol␈α⊂which␈α∂requires␈α⊂that␈α∂all␈α⊂packets␈α∂start
␈↓ α∧␈↓␈↓ β$with␈α⊂an␈α⊂SOP␈α∂marker␈α⊂and␈α⊂end␈α∂with␈α⊂an␈α⊂EOP␈α⊂marker.␈α∂ A
␈↓ α∧␈↓␈↓ β$packet␈α∞must␈α∞be␈α∞properly␈α∞framed␈α∞for␈α∞it␈α∞to␈α∞be␈α∂considered␈α∞to
␈↓ α∧␈↓␈↓ β$have␈α∀been␈α∀received␈α∀correctly.␈α∀ Framing␈α∀errors␈α∀cause␈α∪the
␈↓ α∧␈↓␈↓ β$packet␈α
in␈α∞progress␈α
and␈α∞all␈α
succeeding␈α∞data␈α
to␈α∞be␈α
discarded
␈↓ α∧␈↓␈↓ β$until framing is restored.

␈↓ α∧␈↓␈↓ αTPACKET␈α↔NUMBER␈α↔--␈α↔an␈α↔8.-bit␈α↔quantity␈α_which␈α↔uniquely
␈↓ α∧␈↓␈↓ β$identifies␈αa␈αpacket␈αat␈αa␈αgiven␈αpoint␈αin␈αtime.␈α This␈αis␈αused␈αto
␈↓ α∧␈↓␈↓ β$identify␈α⊗packets␈α⊗if␈α⊗necessary␈α⊗in␈α⊗error␈α↔recovery.␈α⊗ Packet
␈↓ α∧␈↓␈↓ β$numbers␈αmay␈αbe␈αrecycled␈αafter␈αboth␈αhosts␈αhave␈αagreed␈αthat
␈↓ α∧␈↓␈↓ β$the␈α∩packet␈α∩associated␈α∩with␈α∩this␈α∩packet␈α∩number␈α∪has␈α∩been
␈↓ α∧␈↓␈↓ β$correctly sent and received.

␈↓ α∧␈↓␈↓ αTPROCESS␈α
--␈α
an␈α
entity␈α
utilizing␈α
␈↓↓Dialnet␈↓.␈α
 ␈↓↓Dialnet␈↓␈α
traffic␈αconsists
␈↓ α∧␈↓␈↓ β$of communications between processes.

␈↓ α∧␈↓␈↓ αTPROCESS␈α_ID␈α_--␈α_an␈α↔8.-byte␈α_ASCII␈α_string␈α_which␈α↔uniquely
␈↓ α∧␈↓␈↓ β$identifies␈α→the␈α→process.␈α→ See␈α→the␈α→ICP␈α~and␈α→higher-level
␈↓ α∧␈↓␈↓ β$protocols for process-ID conventions.

␈↓ α∧␈↓␈↓ αTSERVER -- the initially passive process in a connection.



␈↓ α∧␈↓␈↓ ε≥23␈↓ 
T
␈↓ α∧␈↓Glossary␈↓ ¬?␈↓↓Dialnet Protocols␈↓␈↓ 	*July 28, 1978


␈↓ α∧␈↓␈↓ αTSOP␈α
--␈α
a␈α
marker␈α
used␈α∞to␈α
indicate␈α
start␈α
of␈α
packet.␈α∞ SOP␈α
consists
␈↓ α∧␈↓␈↓ β$of␈α∃ASCII␈α∃DLE␈α∃(220)␈α∃followed␈α∃by␈α∃STX␈α∃(203).␈α∃ It␈α∃is␈α∀a
␈↓ α∧␈↓␈↓ β$violation␈α∪of␈α∪packet␈α∪framing␈α∪for␈α∪a␈α∪packet␈α∪to␈α∀begin␈α∪with
␈↓ α∧␈↓␈↓ β$anything␈α
other␈α
than␈α
an␈αSOP.␈α
 Any␈α
data␈α
received␈α
when␈αan
␈↓ α∧␈↓␈↓ β$SOP␈α
is␈α
expected␈αshould␈α
be␈α
discarded.␈α Note␈α
that␈α
the␈α200␈α
bit
␈↓ α∧␈↓␈↓ β$must be set for an SOP to be recognized as such.

␈↓ α∧␈↓␈↓ αTTIMEOUT␈α--␈αA␈αdelay␈αtime␈αfor␈αa␈αspecified␈αaction.␈α If␈αthe␈αdesired
␈↓ α∧␈↓␈↓ β$action␈α∂does␈α⊂not␈α∂occur␈α∂within␈α⊂a␈α∂specified␈α∂time,␈α⊂a␈α∂"timeout"
␈↓ α∧␈↓␈↓ β$action is taken.

␈↓ α∧␈↓␈↓ αTUSER -- the initially active process in a connection.

␈↓ α∧␈↓␈↓ αTWINDOW␈α
--␈α
The␈αmargin␈α
for␈α
packets␈α
vs.␈αtheir␈α
acknowledgements
␈↓ α∧␈↓␈↓ β$so␈α∪that␈α∩acknowledgements␈α∪do␈α∩not␈α∪have␈α∩to␈α∪be␈α∩completely
␈↓ α∧␈↓␈↓ β$synchronous with packets.

␈↓ α∧␈↓␈↓ αTWINDOW␈α∞SIZE␈α∂--␈α∞The␈α∂maximum␈α∞number␈α∂of␈α∞unacknowledged
␈↓ α∧␈↓␈↓ β$packets␈αwhich␈αmay␈αbe␈αpending␈αat␈αany␈αtime.␈α This␈αis␈αsimilar
␈↓ α∧␈↓␈↓ β$to what the ARPAnet calls "message allocation".





























␈↓ α∧␈↓␈↓ ε≥24␈↓ 
T